AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.13K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
9 типичных ошибок в Kotlin Flow, которые вы, вероятно, совершаете.

Автор делится своим опытом, собранным в ходе код-ревью реальных Android-проектов. Он отмечает, что, несмотря на всю мощь Kotlin Flow, разработчики часто сталкиваются с неочевидным поведением, которое может приводить к тихой отмене работы, повторному выполнению ресурсоемких операций или неожиданным проблемам с жизненным циклом. В статье подробно рассматриваются девять распространенных ошибок, каждая из которых сопровождается примерами плохого и хорошего кода и краткими практическими правилами, применимыми в реальной разработке.

Статья: https://medium.com/@af2905g/9-kotlin-flow-mistakes-youre-probably-making-c946ad750452
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
ComposeGuard - обнаружение нарушений правил и лучших практик Jetpack Compose

ComposeGuard — это плагин для IntelliJ/Android Studio, который обеспечивает обнаружение нарушений лучших практик Compose в режиме реального времени во время написания кода. Он анализирует ваши компонуемые функции и выделяет проблемы на основе документации по правилам Compose.

Вместо того чтобы ждать проверок линтера во время сборки или проблем в рантайме, вы получаете мгновенную обратную связь прямо в вашей IDE с визуальными индикаторами, быстрыми исправлениями и подробными объяснениями.

ComposeGuard на GitHub: https://github.com/AndroidPoet/compose-guard
Платформа: Android
⭐️: 17

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Создание приложения с меню на Flutter, которое не занимает много памяти

Расскажу вам в этой статье, как я снизил потребление памяти моего macOS-приложения на Flutter более чем на 90%. Это потребовало неожиданно много усилий и включало создание собственного хоста для Flutter, разработку пользовательского плагина для перетаскивания и отладку кучи кода на Rust.

Статья: https://habr.com/ru/companies/piter/articles/976000/
Платформа: кроссплатформа
👍1
Я уменьшил iOS-приложение с 200 до 8 МБ: побочные эффекты, которых я не ожидал

Уменьшить размер приложения с 200 до 8 МБ — легко.

Жить с последствиями — вот это нелегко.

Это история о том, как я слишком много оптимизировал, слишком поздно это понял и случайно создал один из самых запутанных кошмаров отладки в своей карьере.

Статья: https://apptractor.ru/info/articles/200-8.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2
Cupertino - локальный сканер документации Apple и сервер MCP

Cupertino - инструмент для сканирования, индексирования и предоставления документации Apple для разработчиков агентам искусственного интеллекта через протокол контекста модели (MCP).

Cupertino — это локальная, структурированная, готовая к использованию с ИИ система документации для платформ Apple. Она:

• Сканирует документацию разработчиков Apple, Swift.org, предложения Swift Evolution, рекомендации по проектированию пользовательского интерфейса, устаревшие руководства Apple Archive и метаданные пакетов Swift
• Индексирует всё в быструю, доступную для поиска базу данных SQLite FTS5 с рейтингом BM25
• Предоставляет документацию агентам ИИ, таким как Claude, через протокол контекста модели (MCP)
• Обеспечивает автономный доступ к более чем 302 424 страницам документации для 307 фреймворков

Зачем это нужно?

• Больше никаких галлюцинаций: агенты ИИ получают точную и актуальную документацию по API Apple
• Автономная разработка: работайте с полной документацией без доступа к интернету
• Детерминированный поиск: один и тот же запрос всегда возвращает одинаковые результаты
• Локальный контроль: управляйте своей документацией, проверяйте базу данных, создавайте сценарии рабочих процессов
• Дизайн, ориентированный на ИИ: создан специально для интеграции с агентами ИИ через MCP

Cupertino на GitHub: https://github.com/mihaelamj/cupertino
Платформа: iOS
⭐️: 105
👍2
Улучшение доступности в Android-приложениях

В этом руководстве вы узнаете, как используя инструменты Android создавать приложения, доступные для всех. Обеспечение корректного описания контента, удобных сенсорных областей и читаемого цветового контраста — это простые шаги, которые сделают наше приложение более доступным и удовлетворят потребности каждого пользователя.

Статья: https://apptractor.ru/info/articles/uluchshenie-dostupnosti-v-android-prilozheniyah.html
Платформа: Android
1
Android Gradle Graph Plugin - мониторинг зависимостей проекта

Gradle плагин поможет оптимизировать модули в больших многомодульных Android-проектах. Он показывает лишние зависимости в модулях, подскажет, какие модули лучше переделать в котлин модуль, сгенерирует граф зависимостей и метрики.

Плагин был одним из инструментов для ускорения сборки. Подробнее об опыте ускорения сборки проекта 1Fit можете узнать в докладе.

Android Gradle Graph Plugin на GitHub: https://github.com/Anelkad/gradle-portal-verification-PENLI5B8
Платформа: Android
⭐️: 17


👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🦸‍♀️ "Станьте инженером, использующим искусственный интеллект" - обучающий курс JetBrains и Nebius

В сотрудничестве с облачной платформой Nebius AI компания JetBrains запустила серию из десяти бесплатных мини-курсов для разработчиков, демонстрирующих, как интегрировать ИИ в рабочий процесс, чтобы повысить производительность.

Всего на платформе есть 10 курсов и один Live-урок:

• Техники промптинга
• Программирование с ИИ-агентом
• Теория агентского рабочего процесса
• Обзор ИИ-инструментов для разработчиков
• ИИ-агенты как ваша команда
• Создание собственного ИИ-агента
• ИИ в QA
• Введение в ИИ для DevOps
• Легальные риски использования ИИ для программирования
• Создание приложения с ИИ с нуля
• Лабораторная ИИ разработки

Внутри 25 практических задач, выпускной проект. Предполагаемое время на все - около 20 часов. Все бесплатно. Также есть план за $500, который включает более сложную программу обучения и в итоге позволяет получить сертификат.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Ускорение CI сборок в Xcode с кэшированием слотов

Я прошел через множество трудностей, чтобы прийти к этому, и нигде не был описан подход, который я в итоге выбрал. Я подозреваю, что это связано с тем, что относительно немногие используют собственную инфраструктуру CI на macOS, что является обязательным требованием для этой конфигурации.

Далее следует полный технический анализ решения, которое я в итоге реализовал, которое я называю кэшированием с подогревом слотов.

Статья: https://apptractor.ru/info/articles/uskorenie-ci-sborok-v-xcode-s-keshirovaniem-slotov.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Snowdrop - простая работа с сетью

Snowdrop — типобезопасный, простой в использовании фреймворк на основе Swift Macros, созданный для того, чтобы вы могли с легкостью создавать и поддерживать сложные сетевые запросы.

Функции:

• Создание типобезопасных сервисов с помощью макроса @Service
• Поддержка различных типов методов запроса (например, @GET, @POST, @PUT, @DELETE, @PATCH, @CONNECT, @HEAD, @OPTIONS и т.п.)
• Пиннинг SSL/сертификатов
• Перехватчики
• Возможность создания мок-объектов

Snowdrop на GitHub: https://github.com/neothXT/Snowdrop
Платформа: iOS
⭐️: 67

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Все не так с Codable

Опыт нашей команды в работе над производительностью показал, что оптимизации базовых технологий и компонентов намного ценнее точечных оптимизаций. Точечные оптимизации очень хрупкие: немного изменится граф инициализации, последовательность выполнения некоторых функций, добавится новый аргумент в конструктор — и все, точечная оптимизация уже не работает или неактуальна.

А такие базовые компоненты, как JSONDecoder/Encoder, используются в iOS-проектах повсеместно, и ускорение их работы дает ощутимое влияние на общую производительность приложений.

Статья: https://habr.com/ru/companies/tbank/articles/977694/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Android UI-тесты с Maestro без тяжелой инфраструктуры

Maestro в Android-проекте: mock flavor, базовые сценарии и локальный прогон UI-тестов через Git pre-push без тяжелой инфраструктуры.

Статья: https://www.codingpas.ru/posts/android-ui-tests-maestro-pre-push/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Опенсорс-библиотека Implicits от Яндекс Браузера: новый шаг в передаче зависимостей Swift

Когда iOS‑приложение вырастает до сотен тысяч строк, появляется проблема: добавление зависимости в глубокий компонент требует изменений во всех промежуточных функциях. Эти функции зависимость не используют — они просто передают её дальше. Сигнатуры разбухают, рефакторинг превращается в массовую правку файлов, и значительная часть кода становится техническим шумом.

Проблема известна. Scala использует implicit parameters на уровне языка, Kotlin экспериментирует с context receivers, Android полагается на Dagger. А Swift не предлагает встроенного решения. Поэтому мы в команде Яндекс Браузера создали библиотеку Implicits — механизм неявной передачи зависимостей с compile‑time‑проверками. Она успешно работает в продакшне Браузера на полутора миллионах строк Swift‑кода, а ещё доступна в опенсорсе.

Статья: https://habr.com/ru/companies/yandex/articles/976898/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Я попытался сделать Offline-First приложение, и это чуть не уничтожили проект

Мы, разработчики, иногда проводим эксперименты ради удовольствия. А иногда такие эксперименты превращаются в фильмы ужасов.

Мой эксперимент с приоритетом офлайн-подключения должен был быть простым: сделать так, чтобы всё iOS-приложение работало даже при отсутствии сети.

Никаких индикаторов загрузки.

Никаких «пожалуйста, повторите попытку».

Никаких «проверьте ваше соединение».

Просто мгновенный пользовательский интерфейс, локальная запись и фоновая синхронизация, которая волшебным образом всё исправляет, когда восстанавливается сеть.

В теории? Прекрасно.

В реальности? Я случайно открыл финального босса в прохождении архитектуры — конфликты данных.

И не те милые, что описаны в учебниках.

Я говорю о реальных, запутанных, противоречивых ошибках, поступающих от реальных людей, использующих приложение на разных устройствах, способами, которые ни один менеджер по продукту не мог предсказать.

К концу проекта моя локальная база данных знала о предательстве и несогласованности больше, чем любые человеческие отношения.

Статья: https://apptractor.ru/info/articles/ya-popytalsya-sdelat-offline-first-prilozhenie-i-eto-chut-ne-unichtozhili-proekt.html
Платформа: разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
MoviQ - умный трекер фильмов

MoviQ помогает вам управлять списком просмотренных фильмов и открывать для себя новые фильмы с помощью ИИ. Отмечайте фильмы как просмотренные, оценивайте свои любимые, и Gemini 2.0 предложит вам, что посмотреть дальше, исходя из ваших предпочтений.

Автор создал MoviQ как справочник для разработчиков Android, ищущих реальные примеры приложений, использующих масштабируемую чистую архитектуру, Jetpack Compose, интеграцию с Firebase и всестороннее тестирование. Это тот тип кода, который мне самому хотелось бы иметь, когда я изучал современную Android-разработку.

Ключевые архитектурные решения:

• Offline-First: Room как единый источник истины с облачной синхронизацией
• Однонаправленный поток данных: паттерн MVI с закрытыми классами
• Внедрение зависимостей: Hilt для внедрения зависимостей на этапе компиляции
• Фоновая синхронизация: WorkManager с разрешением конфликтов
• Паттерн Репозиторий: Абстрагирование источников данных от бизнес-логики
• Паттерн Use Case: Единая ответственность за каждую бизнес-операцию

MoviQ на GitHub: https://github.com/davidthurman/MoviQ/
Платформа: Android
⭐️: 8

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📺 Видео и подкасты за неделю

(iOS Ru) Ставим приложения на iOS через Android
(iOS Ru) А ваше приложение похудело к лету?
(iOS En) Senior iOS Engineer Mock Interview - Hotel Booking System Design
(iOS En) Apple Books Expandable Menu - SwiftUI
(iOS En) Truncated Text Effect - Tap to Expand Text View, Text Animations, Text Renderer - SwiftUI
(iOS En) How I use Codex GPT 5.2 with Xcode (My complete workflow)
(iOS En) App Store Style Toolbar Scroll Effect - Toolbar Header Scroll Effect - SwiftUI
(iOS En) Smarter Lists, Labels, and Dictionary Grouping in SwiftUI
(And Ru) Разработка видеоредактора
(And En) Navigate Back With Result In Navigation3 (CMP & Native Android)
(And En) Scenes & Scene Strategies In Navigation3 (CMP & Native Android)
(And En) Coroutines Need a Scope... and That's a Good Thing!
(Crs Ru) Да кто такой этот ваш 2D-скролл?
(Dev Ru) TransmateSDK — ваш товарищ-полиглот
(Dev Ru) Яндекс обновил процесс найма: что внутри?
(Dev Ru) Сокращения, AI и рынок СНГ: кто останется востребованным в IT
(Dev Ru) Онбординг пользователей — Активация, retention, продуктовая ценность
(Dev Ru) ИИ-агенты в жизненном цикле ПО: от ассистентов к полноценным членам команды
(Dev En) Unity 2D Pixel Art Game Tutorial
(Dev En) Intro to Supabase – Full Tutorial for Beginners
(Dev En) Gemini Flash Native Audio: Build a Voice AI Ordering System in Python

Прошлогодние видео:

(And Ru) Публикация Android и KMP библиотеки в Maven Central
(Crs Ru) Flutter Dev Podcast #49: многомодульность на Flutter
(Dev Ru) Compose и SwiftUI: найди 10 отличий
(Dev Ru) Запускаем мобильные UI-тесты эффективно
(Dev Ru) Как мы писали проигрыватель с нуля под каждую платформу
(Dev Ru) Как ВКонтакте измеряет перфоманс приложений
(Dev Ru) Очевидные и неочевидные дыры безопасности в мобильной разработке
(Dev Ru) Страх и ненависть в мобильных автотестах. Строим своё облачное решение

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как мы перевернули подход к мобильным интерфейсам с Backend Driven UI

Cегодня я расскажу, как мы построили централизованную и гибкую систему управления статусами, добавили условные переводы с хендлерами для проверки бизнес-правил и реализовали динамические сценарии для гибкого формирования UI. Спойлер: теперь наши механики и менеджеры видят только те действия, которые им реально доступны, а бэкенд гарантирует целостность данных на уровне системы.

Статья: https://habr.com/ru/companies/whoosh/articles/977814/
Платформа: разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Scyther - инструменты отладки iOS-приложения

Scyther - Комплексный набор инструментов для отладки iOS-приложений, который поможет вам выявлять и устранять ошибки. Scyther предоставляет инструменты для разработчиков, тестировщиков, команд UI/UX и бэкенд-разработчиков.

Среди них:

• Получение информации об устройстве и приложении
• Работы с сетью
• Управление данными (UserDefaults, Keychain и файлы)
• Работы с локацией
• Уведомлениями
• UI/UX (сетка поверх UI, границы представлений, замедленные анимации и т.д.)

Scyther на GitHub: https://github.com/bstillitano/Scyther
Платформа: iOS
⭐️: 113

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
«Liquid Glass» на iOS 16: шейдеры — легко, а скриншоты — боль

С выходом iOS 26 Apple наконец-то обновила UI. Интерфейсы стали «стеклянными»: физически корректное преломление, жирная хроматическая аберрация, глубокий объем. Мне очень нравится как это выглядит, хотя в использовании, довольно часто, есть вопросы с удобством.

Но есть проблема: этот API (как и все другие новые от Apple) доступен только в новейшей системе. Если ваше приложение должно поддерживать iOS 18, 17 или (не дай бог) 14, то там всё по-старому: UIVisualEffectView, который блюрит фон.

Звучит как вызов и я захотел написать свой Liquid Glass на Metal + SwiftUI для iOS 16, который визуально будет 1-в-1 как нативный в iOS 26. Казалось бы, задача простая: пиши/найди/вайбкодь шейдер, и готово.

Статья: https://habr.com/ru/articles/978924/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
От ощущений к цифрам: как мы внедрили метрики перформанса в андроид приложение

В какой-то момент мы поняли: пока перформанс не выражен в цифрах, его невозможно защищать, улучшать и связывать с деньгами. Поэтому мы договорились о наборе метрик, начали стабильно собирать их на устройствах пользователей, и построили понятную систему: меряем → интерпретируем → действуем.

В этой статье я расскажу про важность перформанса на мобильных устройствах, исследования бизнеса о том как перформанс влияет на конверсии, GMV, а также про конкретные метрики и примеры кода как их собирать.

Статья: https://habr.com/ru/articles/978170/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
Tomato - минималистичный Помодоро-таймер для Android

Tomato - это минималистичный Pomodoro таймер для Android, созданный на основе Material 3 Expressive. Внутри Jetpack Navigation 3, Room, Vico для графиков и чартов, MaterialKolor для цветовых схем. 

Tomato на GitHub: https://github.com/nsh07/Tomato
Платформа: Android
⭐️: 814

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
2