AppFiles - Mobile Development
2.16K subscribers
3.03K photos
41 videos
12 files
4K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Этот проект создан для настройки и демонстрации анимаций Jetpack Compose на реальном устройстве Android, используя Compose HotSwan для  редактирования в реальном времени. Анимации физические: коэффициент затухания 0,6 против 0,8, сглаживание FastOutSlowIn против EaseOutBack, гравитация частиц 1100 против 1800. Ни один из этих параметров не отображается на экране. Вы ощущаете их на устройстве, и единственный способ найти правильное значение — это постоянно менять его и смотреть на результат.
Jetpack Compose Animations - коллекция анимаций и лучших практик

Каждый пример здесь представляет собой один composable файл с настраиваемыми значениями, указанными как vals в начале функции: длительность, сглаживание, жесткость, цветовые палитры, количество частиц. Вы меняете число, сохраняете файл, и запущенное приложение подхватывает новое значение в течение миллисекунд, без перестройки проекта или потери вашего места в стеке навигации. Идея этого цикла и то, как он меняет способ создания анимаций, описана в статье «Compose Animation: Hot Reload».

Вы также можете запустить это приложение как обычный проект Compose без Compose HotSwan, но примеры построены вокруг цикла настройки параметров. В этом репозитории вы найдете множество самодостаточных примеров, охватывающих основные API анимации (animate*AsState, AnimatedContent, AnimatedVisibility, Animatable, rememberInfiniteTransition, updateTransition, SharedTransitionLayout), движение, управляемое жестами, симуляцию Canvas и физические эффекты.

Jetpack Compose Animations на GitHub: https://github.com/skydoves/compose-animations
Платформа: Android
⭐️: 195

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

В Kotlin появилась долгожданная возможность использовать литералы коллекций, аналогично Python и JavaScript. Теперь можно создавать списки, множества и пользовательские коллекции с помощью квадратных скобок, что значительно упрощает синтаксис. Например, val numbers = [1, 2, 3, 4, 5] создает список, а val names: Set = ["Alice", "Bob", "Charlie"] – множество.

Статья 🇺🇸: https://kt.academy/article/collection-literals
Платформа: Android

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

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

EventBus предоставляет дополнительный инструмент для слабосвязанных уведомлений, когда прямое владение добавило бы ненужную сложность. Цель этого компонента проста: позволить одной части приложения опубликовать событие, а другим частям приложения — подписаться на события определенного типа.

Статья 🇺🇸: https://livsycode.com/best-practices/a-type-safe-eventbus-in-swift/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Xcode Instruments Trace Analyzer (MCP) - ИИ-анализатор для Instruments

С помощью Xcode Instruments Trace Analyzer вы можете попросить Claude записать и проанализировать трассировки Xcode Instruments, выявить регрессии Time Profiler и получить практические рекомендации по оптимизации через локальный MCP-сервер.

Фичи:

• Автоматическое обнаружение узких мест — находит медленные функции, рассчитывает их влияние
• Автоматическая запись — подключитесь к запущенному приложению, запишите трассировку, откройте ее в Instruments.app по умолчанию и проанализируйте за один вызов MCP
• Многоинструментальный анализ — автоматически определяет данные о памяти, сети, энергии, распределении ресурсов и утечках
• Рабочий процесс, ориентированный на зависания — фиксирует события зависания, ограничивает последующий анализ окном зависания и определяет код, его вызвавший
• Регрессионный анализ — сравнивает сборки для выявления проблем с производительностью
• Интеллектуальные рекомендации — предложения на основе шаблонов с примерами кода Swift
• Интерфейс на естественном языке — просто спросите Claude на простом английском языке
• Честная диагностика — сообщает о статусе поддержки, попытках экспорта и неэкспортируемых данных
• Безопасная очистка трассировки — предварительный просмотр или удаление пакетов .trace после того, как пользователь закончит их проверку

Этот проект является дополнением к Instruments, а не полной заменой Instruments.app. Он автоматизирует части, которые Apple предоставляет через xcrun xctrace: запись, экспорт TOC/XML/HAR, символизация, парсинг, отчеты, проверки на регрессию и безопасная очистка трассировки. Инструменты записи по умолчанию открывают сохраненный файл .trace в Instruments.app, поэтому области, отсутствующие в трассировке или недоступные для экспорта, можно проверить в графическом интерфейсе. Если шаблон или представление Instruments недоступны для экспорта, сервер сообщает об этом ограничении, вместо того чтобы создавать собственные данные.

Xcode Instruments Trace Analyzer (MCP) на GitHub: https://github.com/jamesrochabrun/XcodeTraceMCP
Платформа: iOS
⭐️: 14

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

Навигация во Flutter — это постоянные компромиссы. Сначала кажется всё просто: push и pop. А потом проект растёт, появляются табы, вложенные модули, диплинки — и выясняется, что каждый следующий экран открывается по‑разному, а pop() в одном месте ведёт себя не так, как в другом. 

Статья: https://habr.com/ru/companies/yandex/articles/1032600/
Платформа: кроссплатформа/Flutter

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Советы и хитрости Xcode 16: скрытые возможности, которые экономят часы работы

Средний iOS-разработчик, скорее всего, использует лишь 30% того, что на самом деле умеет Xcode 16. А остальные 70%? Они прямо перед глазами — и ждут, чтобы сэкономить вам часы работы.

Если вы обновились до Xcode 16 и подумали: «Да ничего не изменилось», — пристегнитесь. Этот материал для вас.

Статья: https://apptractor.ru/info/articles/sovety-i-hitrosti-xcode-16.html
Платформа: iOS

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

Вы всё ещё копируете и вставляете один и тот же шаблонный код Compose, который использовали два года назад? Тогда вы разрабатываете медленнее, чем могли бы. В Jetpack Compose незаметно появлялись всё новые и новые фичи, которые снова делают разработку Android UI увлекательной. И знание этих возможностей превращает хорошее приложение в отличное.

Статья: https://apptractor.ru/info/articles/10-jetpack-compose-features.html
Платформа: Android

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

RvSystem Monitor — это высокопроизводительное приложение для мониторинга Android-системы, сочетающее в себе выразительные возможности Jetpack Compose с исключительной эффективностью Rust. Оно предоставляет информацию об низкоуровневом аппаратном обеспечении, сохраняя при этом современный и невероятно плавный пользовательский интерфейс.

RvSystem Monitor устраняет разрыв между высокоуровневыми фреймворками пользовательского интерфейса и низкоуровневыми системными API. Используя бэкенд на основе Rust, он минимизирует накладные расходы на производительность, обычно связанные с частым опросом файлов ядра, таких как /proc и /sys. Этот гибридный подход позволяет осуществлять мониторинг частоты ЦП, драйверов графического процессора, состояния батареи и использования памяти в реальном времени без ущерба для быстродействия устройства.

Созданное с использованием Material 3 Expressive, приложение предлагает визуально насыщенный интерфейс с адаптивными макетами и сложными переходами, что делает системную диагностику одновременно мощной и красивой.

Стек:

• Языки: Kotlin 2.3.21, Rust (Edition 2024), C (via libc)
• Фреймворки: Jetpack Compose (BOM 2026.05.00), Material 3 Expressive, Hilt DI
• Бридж: JNI via jni-rs, cargo-ndk
• Инфраструктура: Gradle Kotlin DSL, Android NDK 30.0, Fastlane
• Библиотеки: Retrofit 3.0, OkHttp 5.3, Coil 3.4, Jetpack DataStore

RvSystem Monitor на GitHub: https://github.com/Rve27/RvSystem-Monitor
Платформа: Android
⭐️: 23

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

(iOS Ru) SwiftUI: Scroll, Text и немного магии
(iOS Ru) Когда структуры в Swift — не твои бро
(iOS En) KeyFramed OnBoarding Setup Animation Using SwiftUI
(iOS En) How to Build an Infinite Scroll List Without Sacrificing Performance
(iOS En) X App's New Slide Out Menu Using SwiftUI
(And En) The Android Show | I/O Edition 2026
(And En) Android Developers Office Hours - Offline First Architecture
(And En) Why AI could make native app development great again
(And En) 5 Tricks for Agentic Android Development (Make your agent output what you want!)
(And En) Beyond LLMs: Kotlin Game AI
(And En) Your Code is Eating Recompositions - Optimize it with THIS Trick
(Crs Ru) Кастомим пейнтер через CustomPainter
(Crs Ru) Мы пилили монолит. Много нас, а он один
(Crs Ru) Проблемы геймификации мобильного приложения
(Dev Ru) Новая эра мобильной разработки: запускаем LLM локально на телефоне
(Dev Ru) От личной продуктивности к командной: сила шаблонизации в IDE
(Dev Ru) Живая картинка: анимации и эффекты в кроссплатформенном BDUI-движке
(Dev Ru) Камера в KasperskyOS Mobile
(Dev Ru) Релокация разработчика в Австралию — Визы, поиск работы в IT, эмиграция
(Mrk Ru) Структура пейвола, плейсменты и цены — полный разбор

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

(iOS Ru) Учим Metal и image processing лишь бы не верстать на iOS
(iOS Ru) Race Condition: проблема гонки потоков — что это и как избежать?
(iOS Ru) Под капотом iOS-крешей
(iOS Ru) TextField с автодополнением
(iOS Ru) SwiftUI-навигация: просто, нативно и декларативно
(iOS Ru) Удивительный мир внутри .ipa
(iOS Ru) Core Motion framework в финансовых приложениях
(And Ru) Тестирование Compose по-новому: простота, надежность, гибкость
(And Ru) Путешествие к центру Композиции
(And Ru) Scout: новый фреймворк для ускоренного и безболезненного управления зависимостями
(And Ru) Компиляторные плагины: модификация и анализ Сompose
(And Ru) Как я code coverage внедрял да Gradle plugin для baseline писал

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

Сотня рекомпозиций в секунду при скролле — это приговор. Приговор батарее устройства, плавности анимаций и вашей репутации как инженера. Мы привыкли мыслить высокоуровневыми абстракциями: закинуть LazyColumn, добавить пару Modifier.padding и отправить в продакшен. Но что делать, когда стандартные компоненты начинают "захлебываться", а Layout Inspector горит красным от избыточных отрисовок?

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

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

Conduit — это типобезопасный фреймворк Swift для работы с облачными и локальными языковыми моделями через единый API.

Что это вам даёт:

• Быстрый локальный инференс: оптимизирован для Apple Silicon с первоклассной поддержкой MLX
• Типобезопасный структурированный вывод: макросы Swift 6 проверяют сгенерированные формы во время компиляции
• Одна поверхность для нескольких поставщиков: переключение между моделями Claude, GPT-4o и локальными моделями осуществляется с помощью небольшого изменения конфигурации
• Провайдеры на основе акторов: модель параллельного выполнения остаётся явной и потокобезопасной

Conduit на GitHubhttps://github.com/christopherkarani/Conduit
Платформа: iOS
⭐️: 96

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

Если вы iOS‑разработчик и планируете внедрять Live Activities в своё приложение — эта статья для вас. Особенно если обновления LA инициируются событиями на сервере, а не действиями пользователя в приложении. Когда пользователь нажимает кнопку или запускает таймер — приложение само знает об этом и может обновить LA напрямую из кода. Но когда банк одобряет кредит или меняется статус заказа — это происходит на бэкенде, и только сервер знает о событии. В таких случаях без пушей не обойтись. Мы наступили на несколько граблей, нашли неочевидное решение и хотим сохранить вам пару недель отладки.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Foundation Models в iOS 26: разбор фреймворка для on-device LLM

Речь пойдёт о Foundation Models Framework: что это, как устроено внутри, как с этим работать в реальном приложении и где у этого фреймворка границы применимости. Я постарался не пересказывать документацию Apple, а сосредоточиться на тех моментах, которые не очевидны при первом знакомстве и о которых я бы хотел узнать раньше, чем начал писать первый прототип.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Swagger-генерация на Android. Часть 1. Каких проблем нам подкинул бекенд и Android проект

Почти любое мобильное приложение общается с бэкендом, а значит живёт по контракту — чаще всего в виде OpenAPI-схемы. Смотреть на неё удобнее всего в Swagger.

Пока проект маленький, изменения в API можно отслеживать вручную. Но по мере роста схемы и команды ручная проверка становится дорогой и начинает регулярно ломаться.

Автогенерация из OpenAPI решает проблему, но в многомодульном Android-проекте всплывают нюансы: где хранить код, как не тянуть лишнее, как вписать сгенерённый код в архитектуру.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
12 приёмов SwiftUI, которые ежедневно используют Senior iOS-разработчики

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

После 4 лет разработки приложений на SwiftUI для клиентов я собрал 12 приемов, которые использую каждый день. Некоторые из них — это малоизвестные функции API. Некоторые — это архитектурные шаблоны. Но все они значительно упростят ваш код.

Статья: https://apptractor.ru/info/articles/12-priyomov-swiftui-kotorye-ezhednevno-ispolzuyut-senior-ios-razrabotchiki.html
Платформа: iOS

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

Switchboard — это готовый к использованию, типобезопасный механизм управления флагами функций для Android. Он использует Kotlin Symbol Processing (KSP) для преобразования простых объявлений свойств в мощную систему конфигурации, дополненную реактивным отладочным интерфейсом и сетевой диагностикой.

Фичи:

• Сквозная типобезопасность: флаги определяются один раз как свойства Kotlin. Доступ к ним возможен в любом месте с полной поддержкой компилятора — никаких «магических строк», никакого ручного приведения типов.
• Дашборд отладки в реальном времени: автоматически генерируемый интерфейс Jetpack Compose для проверки источника каждого флага (удаленный, локальное переопределение или значение по умолчанию) и переключения переопределений на лету.
• Готовые к использованию бэкенды: первоклассная поддержка Firebase Remote Config с реактивными потоками обновления.
• Производительность без рефлексии: KSP генерирует весь код реестра во время компиляции для максимальной эффективности во время выполнения.
• Диагностика сети: Встроенный перехватчик OkHttp, который соотносит каждый сетевой запрос с конкретными флагами функций, управляющими логикой приложения.
• Встряхивание для отладки: Интегрированный жест встряхивания для мгновенного доступа к консоли отладки в непроизводственных сборках.

Switchboard на GitHub: https://github.com/megh-lath-1012/switchboard
Платформа: Android
⭐️: 6

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

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

Ваше приложение может работать на телефонах, планшетах, складных устройствах, ChromeOS, в режиме разделенного экрана и с изменяемым размером окон. Размер одного и того же устройства может меняться во время работы приложения. Складное устройство может открыться. Приложение для планшета может перейти в режим разделенного экрана. Телефон может повернуться.

Статья: https://apptractor.ru/info/articles/sozdanie-adaptivnyh-maketov-v-jetpack-compose.html
Платформа: Android

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

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

Мы хотели сделать что-то другое. Последние несколько месяцев мы постепенно разворачивали агента для code review внутри инженерной организации DoorDash. Ключевой проблемой в итоге оказалось внимание: помочь агенту сфокусироваться на тех частях изменений, которые действительно заслуживают пересмотра, и молчать, когда ему нечего полезного добавить.

Планка, которую мы для себя установили, была не в духе «находить проблемы». Критические вопросы были такими:

• Действительно ли инженеры меняют свой код, когда агент оставляет комментарий?
• Сохраняет ли он достаточный уровень доверия, чтобы команды продолжали держать его включённым?

Вот к чему мы пришли.

Статья: https://apptractor.ru/info/articles/kak-doordash-sozdal-sistemu-proverki-koda-na-osnove-ii-k-mneniyu-kotoroy-inzhenery-deystvitelno-prislushivayutsya.html
Платформа: разработка

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

Actomaton — это фреймворк для управления состоянием с использованием асинхронного подхода async/await и Actor на Swift, вдохновленный Elm и swift-composable-architecture.

Actomaton обеспечивает предсказуемый и потокобезопасный подход к управлению состоянием приложения и побочными эффектами в приложениях Swift.

Actomaton на GitHub: https://github.com/Actomaton/Actomaton
Платформа: iOS
⭐️: 262

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Код Telegram iOS — лучший в индустрии. Почему же он так лагает на флагманах?

Telegram — технически самый сложных мессенджер в мире. В iOS приложении 2.1M+ строк, 700+ модулей, 86% Swift, 13 лет кодовой базы, и мало ObjC — это колоссальный труд.

Но при этом приложение лагает на флагманах, AsyncDisplayKit открывает по 10 дублей окон разом(а это явно тормозит ARC), крэши на редактировании изображений стабильны годами.

Почему?

Потому что 86% кода написаны на Swift, но разработчики мыслят все еще в парадигме ООП.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤪41🔥1💯1
Переезд с XML на Jetpack Compose на проде: базовые классы, архитектура, сложности и готовые решения

Рано или поздно любая растущая кодовая база упирается в потолок своих архитектурных решений. У нас этот момент настал, когда количество экранов выросло до нескольких сотен и команда начала тратить больше времени на борьбу с неконсистентным состоянием UI. Классическая связка XML + ViewBinding + MVVM работала, но с каждым новым экраном мы всё острее чувствовали её ограничения: разрозненные StateFlow, дублирование кода во фрагментах, сложность переиспользования компонентов.

Нужно было что-то менять — пересмотреть сам подход к построению UI. Так мы начали миграцию на Jetpack Compose (который на момент начала перехода уже был стабильным и самодостаточным). Полтора года спустя, пройдя через рефакторинг базовых классов, переход с MVVM на MVI и постепенную замену содержимого всех фрагментов, мы получили стек, на котором разработка ускорилась, а баги, связанные с состоянием экрана, практически исчезли.

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

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