AppFiles - Mobile Development


Гео и язык канала: Россия, Русский
Категория: не указана


Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.

Связанные каналы  |  Похожие каналы

Гео и язык канала
Россия, Русский
Категория
не указана
Статистика
Фильтр публикаций


Забавные анимации с меш-градиентами в Jetpack Compose 1.12

В Jetpack Compose всегда были интерфейсы для линейных и радиальных градиентов. Но если хотелось получить более сложное смешивание цветов, подходящего встроенного решения не было. Теперь оно появилось: в Jetpack Compose 1.12 представлен MeshGradientPainter.

Статья: https://apptractor.ru/info/articles/zabavnye-animatsii-s-mesh-gradientami-v-jetpack-compose-1-12.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


MYCloudKit - синхронизация и и возможности обмена данными через CloudKit

MYCloudKit — это фреймворк, разработанный для упрощения и автоматизации операций синхронизации, удаления и получения данных из CloudKit для вашего приложения. 

MYCloudKit на GitHub: https://github.com/mufasaYC/MYCloudKit
Платформа: iOS
⭐️: 215
 
👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Репост из: Mobile Development by AppTractor
⚡️⚡️Мобильные разработчики снова соберутся на Mobius этой осенью!

21–22 октября в Санкт-Петербурге и онлайне пройдет Mobius — конференция JUG Ru Group для мобильных разработчиков. По традиции в фокусе — практические задачи, нативный и кроссплатформенный подходы, архитектура и реальный опыт продуктовых команд.

Программа уже активно формируется, делимся наиболее интересными докладами:

🔹Портирование Android-приложений под HarmonyOS NEXT. Спикер расскажет про автоматизированный перенос с сохранением архитектуры: от преобразования Kotlin-кода в ArkTS до трансляции Jetpack Compose в ArkUI.

🔹AI-driven T-shape. Разбор реального опыта команды о том, как искусственный интеллект помогает осваивать соседние платформы и бэкенд, ускоряя развитие инженеров и уменьшая time-to-market.

🔹Liquid Glass своими руками на Metal. Анатомия визуального эффекта из iOS 26 и его воссоздание для более старых версий с разбором интеграции в кодовую базу Telegram.

📣 Встречаемся 21–22 октября (Санкт-Петербург + online).

Подробнее о программе и билетах — на сайте.


React Native в 2026 году: New Architecture, нативный код и AI в реальном проекте

React Native по-прежнему часто описывают формулой «один код для iOS и Android». В 2026 году она звучит слишком просто. Современное приложение на React Native — это общий продуктовый слой на TypeScript, нативный интерфейс, Hermes, Fabric, JSI, фоновые процессы, platform-specific код и довольно много решений о том, где именно должна выполняться каждая задача.

Мы столкнулись с этим в Synchra.24 — мобильном приложении для линейных и распределённых команд. В проекте больше тысячи TS/TSX-файлов и свыше ста экранов, но рядом с ними живут Kotlin и Swift: геопозиция, push-уведомления, биометрия, системные виджеты и работа с медиа. Это не история о функциях нашего продукта и не попытка его рекламировать. Это разбор того, чем на практике стала разработка на React Native к 2026 году — и какую часть этой работы действительно можно поручить нейросетям.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


📺 Видео и подкасты за неделю

• (iOS En) SwiftUI in motion
• (iOS En) AllTrails: Momentum without a rewrite
• (iOS En) Flow data through SwiftUI
• (iOS En) SwiftUI essentials
• (iOS En) A guide to layout in SwiftUI
• (iOS En) Design with SwiftUI
• (iOS En) Reorderable Modifier | Multi-Item Reordering | Section Reordering | SwiftUI
• (iOS En) Prominent Action Custom Tab Bar | SwiftUI
• (iOS En) Device Hub Explained - What Every Apple Developer Should Know
• (And Ru) Android Runtime под капотом
• (And En) The Multi-Agent Code Review Workflow For My Production Android Apps
• (And En) Vertical vs. Horizontal Slicing - The ONLY Right Way to Split Down Your App
• (And En) A tale of the Gradle DSLs
• (Crs En) SwiftPM support for Kotlin Multiplatform
• (Crs En) All platforms are unique but some platforms are more unique than others
• (Crs En) KMP at Scale in Kuaishou Super App for over 700M users
• (Dev Ru) Выпрямляем руки агентов: как сделать MCP удобными и действительно полезными
• (Dsg Ru) DesignOps: операционная система команды, которая работает на вас
• (Dsg Ru) Дизайн для программиста: пробую Claude Design
• (Dev En) Build a live translation broadcast app with the Gemini Live API and LiveKit
• (Dev En) Go Get It, with Kotlin Lessons Learned Evolving Uber’s Java Backend

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

• (Dev Ru) Генерация UI Kit с использованием ИИ
• (Dev Ru) Надежность мобильных приложений: что это и как достичь
• (Dev Ru) Задача на логику из собеседования в Amazon (+ все собеседования)

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Boxlore - умный плеер подкастов для Android

Большинство приложений для подкастов обращаются к открытому API, выполняют буквальный поиск по словам, показывают чарты Apple — и на этом всё. Ошибитесь в написании названия шоу — и ничего не найдёте. Попробуйте искать по теме — получите совпадения по заголовкам, которые вообще не отражают смысл запроса. А когда вы уже внутри приложения, главный экран редко ощущается как ваш: одинаковые подборки для всех и почти никакого обучения на основе того, что вы действительно слушаете.

Boxlore создан именно вокруг этих двух проблем. Он помогает найти шоу даже при неточном написании названия или искать подкасты и отдельные эпизоды по смыслу, когда вы примерно знаете, что хотите, но не можете сформулировать точный запрос. А по мере прослушивания приложение становится персональнее: Home, Explore, очередь и загрузки переупорядочиваются прямо на устройстве с учётом ваших предпочтений. Появляются подборки по времени суток, Because You Like, персональные рекомендации For You, а также карточки для случайных открытий — когда хочется найти что-то такое, что вы сами никогда не стали бы искать. Данные о ваших предпочтениях остаются на телефоне. Можно слушать потоково или скачивать выпуски для офлайн-доступа, полноценно управлять очередью и обходиться без рекламы и платных ограничений там, где это действительно важно.

Умный каталог охватывает популярные подкасты из чартов и ежедневно расширяется — пока в нём есть не абсолютно все шоу в мире. Но даже за пределами этого индекса Boxlore продолжает работать как обычный клиент для подкастов: можно подписываться, слушать, скачивать выпуски и импортировать OPML.

Boxlore на GitHub: https://github.com/boxcreate/boxlore
Платформа: Android
⭐️: 59

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Как Tinder сократил холодные старты на 47%, благодаря R8 Configuration Analyzer

Используя R8 Configuration Analyzer, Tinder смог найти и удалить непреднамеренные блокировки оптимизации. Результаты оказались заметными сразу:  холодные запуски сократились на 47%, размер загружаемого приложения уменьшился на 28,98% — до 61,5 МБ, а число заметных пользователю ANR снизилось на 28%.

Статья: https://apptractor.ru/info/articles/kak-tinder-sokratil-holodnye-starty-na-47-blagodarya-r8-configuration-analyzer.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Подготовьте ваше приложение к более широким ограничениям объема памяти

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

В Android 17 ввели ограничения памяти для отдельных приложений, начав с устройств Pixel. Их задача — защитить общую отзывчивость системы от приложений, которые потребляют слишком много памяти и вызывают замедление всего устройства. В течение следующего года всё больше производителей начнут использовать ограничения памяти Android для приложений на устройствах с объёмом ОЗУ от 4 ГБ до 16 ГБ и более. Если приложение превысит эти лимиты, система замедлит его работу, а затем может завершить процесс. Поэтому уменьшение объёма потребляемой приложением памяти становится критически важным: это помогает избежать ограничения производительности со стороны ОС и сохранить плавный пользовательский опыт.

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

Статья: https://apptractor.ru/info/articles/podgotovte-vashe-prilozhenie-k-bolee-shirokim-ogranicheniyam-obema-pamyati.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Stitch - инъекция зависимостей для SwiftUI

Stitch — это лёгкая библиотека внедрения зависимостей (DI), вдохновлённая SwiftUI и обеспечивающая безопасность на этапе компиляции. Она позволяет описывать карту зависимостей без необходимости использовать инструменты генерации кода.

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

Для описания карты зависимостей Stitch использует новые макросы Swift 5.9+, что делает API более удобным, а для получения объектов из карты предоставляет соответствующие реализации @propertyWrapper.
Stitch предлагает следующие ключевые возможности:

1. Интеграция в жизненный цикл SwiftUI и привычный для SwiftUI стиль работы — использовать Stitch можно так же, как другие оболочки свойств SwiftUI.
2. Внедрение зависимостей через протоколы внутри представлений SwiftUI. Библиотека расширяет возможности ObservableObject, позволяя работать с протокольными типами и при этом корректно обновлять представления.
3. Доступ к Combine-издателям для свойств протокольных типов без необходимости добавлять в протокол переменные вида Publisher и вручную проксировать их в реализации.

Stitch на GitHubhttps://github.com/entrhq/stitch
Платформа: iOS
⭐️: 19
 
👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Senior инженеры замолчали, и вот почему это плохой знак

Речь не о том, что у этих инженеров закончились мнения. Мнений у них по-прежнему хватает. Изменилось другое — куда эти мнения теперь направляются. Стало меньше замечаний на дизайн-ревью. Меньше возражений в архитектурных обсуждениях. Меньше тех моментов, когда человек с десятью годами производственного опыта говорит: подождите, я уже видел нечто подобное, и вот чем всё закончилось.

Встречи по-прежнему проходят. Решения по-прежнему принимаются. Но один конкретный вид трения стал почти незаметным. А это трение выполняло важную функцию.

Статья: https://apptractor.ru/info/articles/senior-inzhenery-zamolchali-i-vot-pochemu-eto-plohoy-znak.html
Платформа: разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


ZeroDroid - инструменты для анализа сетей, сигналов и безопасности

ZeroDroid — открытое Android-приложение, которое превращает смартфон в универсальный набор инструментов для анализа беспроводных сетей, радиосигналов, датчиков и безопасности. Проект объединяет 29 инструментов в пяти категориях: Wireless, RF & Signals, Sensors, Network и Security. Для работы используются аппаратные возможности самого телефона — Wi-Fi, Bluetooth и BLE, NFC, GPS, сотовый модем, магнитометр, барометр, микрофон, USB, UWB и ИК-порт, если они присутствуют в конкретном устройстве.

Среди наиболее интересных функций — анализатор Wi-Fi, BLE-сканер с просмотром GATT, инструменты NFC, Wi-Fi Direct и Wi-Fi Aware, анализ ультразвукового диапазона 18–24 кГц, работа с внешними SDR-приёмниками через USB OTG и мониторинг датчиков смартфона. Есть также GPS-трекер с информацией о GNSS-спутниках и записью NMEA, EMF Mapper на основе магнитометра, инспектор USB-устройств и анализатор сотовых вышек.

ZeroDroid написан на Kotlin с использованием Jetpack Compose и Material 3. Архитектура построена вокруг MVVM, StateFlow и Hilt, для локального хранения используется Room, для камеры — CameraX, а для распознавания QR-кодов — ML Kit и ZXing. Минимальная поддерживаемая версия — Android 8.0, хотя для полноценной работы современных Bluetooth и Wi-Fi API автор рекомендует более новые версии Android. Не все возможности доступны на каждом смартфоне: например, UWB, ИК-передатчик или барометр зависят от конкретного аппаратного оснащения.

ZeroDroid на GitHub: https://github.com/theabhishekchandra/ZeroDroid
Платформа: Android
⭐️: 22

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Android Skills — что выпустил Google и почему большинство разработчиков используют навыки неправильно

Вы, скорее всего, уже видели анонс. Android Skills запустили в апреле; реакция превзошла ожидания Google, а в начале августа команда Android Developer Relations опубликовала подробный материал, в котором объяснила философию проекта.

Большинство разработчиков восприняли это как обычное описание релиза.

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

Статья: https://apptractor.ru/info/articles/android-skills-chto-vypustil-google-i-pochemu-bolshinstvo-razrabotchikov-ispolzuyut-navyki-nepravilno.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Архитектура Android переходит от Event-Driven UI к State-Driven UI

Состояние — это то, за чем UI наблюдает постоянно. События или эффекты — это то, что UI должен обработать только один раз. Такой подход давно распространён в архитектурах MVVM и MVI. Однако если посмотреть на актуальные рекомендации Android-разработки по событиям UI, Google предлагает пересмотреть саму эту модель.

Статья: https://apptractor.ru/info/articles/arhitektura-android-perehodit-ot-event-driven-ui-k-state-driven-ui.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


JS-инъекция для iOS-тестов: как подружить WKWebView и XCTest

Мы пишем UI-тесты для Ozon Банка, и примерно каждый второй экран — с WebView. Оферты, платёжные формы, веб-флоу — всё это рендерится внутри WKWebView. И здесь XCTest оказывается почти бессилен.

Статья: https://habr.com/ru/companies/ozonbank/articles/1016596/
Платформа: iOS/тестирование

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


DI без рефлексии и бойлерплейта: магия KSP в действии

KoGen Di родился из реальной боли в многомодульной разработке — и с тех пор заметно подрос: компиляционная валидация графа, изоляция по модулям, поддержка Fragment/ComponentActivity, а недавно — и собственный typed Gradle-плагин. Я уже перевёл на него несколько своих рабочих проектов, и количество рутинного DI-кода в них сократилось в разы. Раньше в открытом доступе было только демо-приложение; теперь открыт весь проект целиком — рантайм, KSP-процессор и Gradle-плагин.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Как мы научили XCUITest тапать в контролы на глубине 136 уровней вложенности

У нас есть server-driven UI экран, наш BDUI, про движок которого была отдельная статья. Дерево вьюх у него настолько глубокое, что любое обращение теста к элементам падало. Причём двумя разными способами, и оба — не из-за кода, а из-за жёстких лимитов внутри самого фреймворка автоматизации.

В итоге мы научились читать дерево произвольной глубины и тапать/вводить текст в поля, которые лежат глубже ~60 уровней AX-дерева, где публичный XCUITest бессилен. Далее я буду фокусироваться на общей технике для XCUITest, а не на внутреннем устройстве нашего движка. Так что статья пригодится, даже если у вас никакого BDUI нет, а просто есть очень глубокий экран.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


SurfaceForge - отражающие поверхности, реагирующие на наклон устройства

SurfaceForge - поверхности, реагирующие на наклон устройства. Сделано на SwiftUI + Metal. 

SurfaceForge на GitHub: https://github.com/AetherMaker/surface-forge
Платформа: iOS
⭐️: 24
 
👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Почему ваше приложение выглядит дёшево (и дело не в цветах)

Я видел достаточно таких случаев, чтобы сразу узнать закономерность. Разработчик сделал действительно красивое приложение, но пропустил те самые 200 миллисекунд после того, как палец касается стекла. А ведь именно эту часть приложения пользователь буквально ощущает.

Он хотел, чтобы я раскритиковал цвета.

Но цвета вообще не были проблемой.

Давайте разберёмся.

Статья: https://apptractor.ru/info/articles/pochemu-vashe-prilozhenie-vyglyadit-dyoshevo-i-delo-ne-v-tsvetah.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Как мы перенесли ответственность за поддержку мапперов моделей на KSP

Я Android-разработчик в компании Workmate, и сегодня хочу рассказать о том, как мы избавились от самой нудной части своей работы - ручной поддержки мапперов моделей - и как перенесли эту ответственность на KSP.

Каждый разработчик, работавший с проектом, где одни модели мапятся в другие, знает эту боль: добавил поле в модель и пошёл обновлять десятки мапперов вручную. Переименовал параметр - компилятор взрывается ошибками, и ты снова правишь код руками. Мапперы - это “мёртвая зона”: они пишутся механически, но при этом легко ломаются и не приносят никакой ценности бизнесу.

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

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность


Bridge - фоновый рантайм для Android, который переживает завершение процесса и умеет объяснять своё состояние

Bridge — это среда выполнения фоновых задач Android, построенная непосредственно на основе собственных примитивов платформы: журнала событий с возможностью добавления данных, диспетчеризации с мультиплексированием JobWorkItem, анализе причин завершения процесса с помощью ApplicationExitInfo и измерения затрат с помощью HealthStats. Работа, прерванная из-за завершения процесса, возобновляется с того места, где она остановилась, и каждая отложенная или приостановленная задача может объяснить причину, опираясь на собственные отчеты платформы.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Показано 20 последних публикаций.