AppFiles - Mobile Development
2.18K subscribers
3.15K photos
42 videos
13 files
4.13K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
PovioKit - коллекция полезных модулей

PovioKit - модульный инструментарий Swift 6, включающий вспомогательные средства для Concurrency, расширения Foundation, компоненты SwiftUI/UIKit/ AppKit и специализированные утилиты (Money, MediaPlayer, IAP, Camera, Exif, обертки свойств и т. д.) — все скомпилировано в условиях строгого параллельного выполнения.

PovioKit на GitHub: https://github.com/povio/PovioKit
Платформа: iOS
⭐️: 26

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

Я Марк, Android-разработчик, работаю над мобильным приложением для управления умным домом Салют. Для мира Android-разработки вопросы архитектуры, её надёжности и качества актуальны, но… на самом деле не так уж интересны. Интересно, чтобы приложения были надёжными, устойчивыми к ошибкам, поддерживаемыми и легко масштабируемыми. Самый популярный подход — по-прежнему архитектурные паттерны (MV* паттерны) и разделение архитектуры по слоям. Что никак не избавляет от ошибок.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Compose Navigation Graph - визуализация потоков приложения

Compose Navigation Graph превращает весь поток вашего приложения в единую живую карту: каждый экран отображается в виде существующей миниатюры @Preview, а каждый переход — в виде стрелки, по которой можно следовать. Он работает с Navigation 3, Navigation 2, любыми другими библиотеками навигации Compose и даже обычными Activity.

Вы добавляете аннотации к своим экранам, а плагин Gradle и процессор KSP статически извлекают граф навигации и отображают миниатюру каждого экрана без эмулятора. Затем плагин для IntelliJ/Android Studio отрисовывает всю навигацию вашего приложения, объединенную по модулям, в окне инструментов, где вы можете перейти к исходному коду и добавить переходы. Вы даже можете проверять изменения навигации в запросах на слияние с помощью закомиченного базового файла .nav, так что никакие изменения пунктов назначения или переходов не останутся без проверки.

Compose Navigation Graph на GitHub: https://github.com/skydoves/compose-nav-graph
Платформа: Android
⭐️: 286

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

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

В данной статье мы ознакомимся с протоколами, по которым работает почта. Сфокусируемся на реализации протокола для отправки почтовых сообщений (SMTP) на низком уровне (BSD сокеты). И, используя собственный сетевой слой для работы с почтой, реализуем iOS клиент для отправки почтовых сообщений через любые почтовые провайдеры (ex: gmail, yandex, mail).

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

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

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

Datadog совместно с Google снизила эту боль, встроив ProfilingManager API, доступный на устройствах с Android 15 и новее, в свои платформы мониторинга реальных пользователей (Real User Monitoring, RUM) и непрерывного профилирования (Continuous Profiling). Эта интеграция меняет процесс отладки: разработчики могут перейти от поверхностных симптомов к пониманию причины провала в производительности.

Используя этот системный API, Datadog, по внутренним данным компании за июнь 2026 года, еженедельно обрабатывает миллионы профилей из рабочей среды по всему миру. Это даёт инженерным командам новый уровень видимости реальной производительности при сохранении низких накладных расходов в рантайме, что важно для мониторинга производительности в рабочих масштабах.

Статья: https://apptractor.ru/info/articles/datadog-predostavlyaet-milliony-insaytov-o-proizvoditelnosti-s-pomoschyu-profilingmanager.html
Платформа: Android

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

Swift 6.4 включает в себя ряд улучшений языка и дополнений к стандартной библиотеке, которые делают повседневный код более чистым и выразительным. В этой статье рассматриваются наиболее заметные изменения, представленные на WWDC26.

Статья: https://apptractor.ru/info/articles/chto-novogo-v-swift-6-4-posle-wwdc26.html
Платформа: iOS

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

ListKit — это библиотека SwiftUI, предоставляющая дополнительные инструменты для работы со списками, сетками и полками, предоставляющая гибкие способы отображения элементов. ListKit содержит множество предопределенных представлений, а также собственные расширения.

ListKit на GitHub: https://github.com/danielsaidi/ListKit
Платформа: iOS
⭐️: 9

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

В 2025 году вместе с iOS 26 компания Apple представила разработчикам Apple Foundation Models. Теперь порог входа для on-device AI упал до нескольких строк, и далее в статье мы рассмотрим как он выглядит.

А в январе 2026 года Apple заключила сделку с Google в рамках которой следующее поколение Apple foudation models будет основано на технологии Google Gemini. По данным Bloomberg стоимость этой сделки составляет 1 млрд долларов в год. Apple по-прежнему держит контроль над пользовательскими данными, запросы будут выполняться локально, что-то сложное, с чем не может справиться локальная модель - будет отправляться в облако Apple Private Cloud Compute.

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

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

Kore — это платформа дизайна Compose Multiplatform (Android, iOS, Desktop, Web), предоставляющая красиво оформленные компоненты, помогающие создавать масштабируемые и согласованные дизайн-системы.

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

Kore на GitHub: https://github.com/dev778g-me/Kore
Платформа: Android/кроссплатформа
⭐️: 3

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

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

Сначала я пробовал стандартные фильтры LogCat, затем написал скрипты которые чистили по нужным тегам, затем переключался на скармливание этих логов в AI. Выжранные токены заставили чистить уже подготовленные логи. Но все равно это было неудобно и отнимало время.

Поняв, что так дальше жить нельзя, я решил сделать инструмент под себя. Результатом стал плагин TAO LogExt для Android Studio, который превращает эту рутину в удобное управление в несколько кликов.

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

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

Xcode 27, представленный на WWDC 2026, впервые включает в себя агентские навыки разработки, в том числе на SwiftUI, от Apple. Эти навыки отлично подходят для агентской разработки в Xcode или при использовании навыков из Xcode 27 в Claude, Codex и Cursor — любой IDE для ИИ.

Хотя мы можем использовать эти навыки и не оглядываться назад, гораздо интереснее углубиться в анализ того, что Apple считает достаточно важным для включения в навык. Навыки должны быть компактными и оптимизированными для использования токенов, поэтому в них будут включены только необходимые части. В этой статье мы углубимся в лучшие практики SwiftUI, рассмотрев навык SwiftUI Specialist Agent, входящий в состав Xcode 27.

Статья: https://apptractor.ru/info/articles/luchshie-praktiki-swiftui-iz-agentskogo-navyka-xcode-27.html
Платформа: iOS

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

SWCompression - фреймворк с алгоритмами (де)компрессии и функциями для работы с различными архивами и контейнерами.

Фичи:

• Декомпрессия (а иногда и сжатие) с использованием различных алгоритмов
• Чтение (а иногда и запись) архивов различных форматов
• Чтение (а иногда и запись) контейнеров, таких как ZIP, TAR и 7-Zip

Работает на платформах Apple, Linux и Windows.

SWCompression на GitHub: https://github.com/tsolomko/SWCompression
Платформа: iOS
⭐️: 273

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

Представьте, что вы приезжаете в незнакомый город, надеваете проводные очки расширенной реальности — например, готовящиеся к выпуску XREAL Project Aura — и сразу получаете персонального местного экскурсовода, который хорошо знает город. Вам больше не нужно постоянно смотреть на плоскую карту: трёхмерные модели ненавязчиво указывают путь, а интеллектуальный голосовой помощник рассказывает об исторических достопримечательностях, находящихся прямо перед вами.

Мы объединили геопространственные программные интерфейсы, программный интерфейс Gemini с использованием Firebase AI Logic, привязку данных Google Maps к реальному миру и комплект средств разработки Jetpack XR. В результате получилось иммерсивное приложение для пешеходных экскурсий, которым можно пользоваться без помощи рук.

Статья: https://apptractor.ru/info/articles/sozdanie-gida-v-smeshannoy-realnosti-s-ispolzovaniem-android-xr-geoprostranstvennogo-api-i-gemini.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
От класса размера к доступному пространству: остается ли horizontalSizeClass надежным параметром?

Как показали на WWDC 26, при зеркальном отображении приложения для iPhone на Mac через функцию iPhone Mirroring, размер его окна можно свободно изменять. Одновременно с этим, приложения для iPhone, работающие на iPad, также получат возможность изменять размер окна. Даже без обновления физического устройства до бета-версии новой ОС, разработчики уже могут оценить это изменение в предварительных версиях Xcode 27 или в среде симулятора iOS 27 в Device Hub.

Однако влияние этого обновления выходит далеко за рамки простого изменения размера окон приложений для iPhone. Оно меняет представление многих разработчиков о системе компоновки. Некоторые характеристики, которые ранее часто использовались в качестве параметров компоновки, такие как horizontalSizeClass, больше не подходят в качестве основного критерия определения ширины окна.

Так является ли это изменение внезапным сдвигом или неизбежным результатом долгосрочной эволюции системы компоновки Apple? В этой статье мы рассмотрим этот вопрос.

Статья: https://apptractor.ru/info/articles/ot-klassa-razmera-k-dostupnomu-prostranstvu-ostaetsya-li-horizontalsizeclass-nadezhnym-parametrom.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Chucker - HTTP инспектор для Android

Chucker упрощает проверку HTTP(S) запросов/ответов, отправляемых вашим Android-приложением. Chucker работает как Charles, только на устройстве - он перехватывает OkHttp, сохраняя все события внутри вашего приложения и предоставляя пользовательский интерфейс для проверки и шаринга их содержимого.

Приложения, использующие Chucker, будут отображать уведомление с кратким обзором текущей HTTP-активности. Нажатие на уведомление запускает полный пользовательский интерфейс Chucker. Приложения могут по желанию подавить уведомление и запустить пользовательский интерфейс Chucker непосредственно из своего собственного интерфейса.

Chucker на GitHub: https://github.com/ChuckerTeam/chucker
Платформа: Android
⭐️: 4.5K

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

(iOS En) Inside Apple Intelligence and Xcode: Special Presentation
(iOS En) WWDC26: SwiftData Group Lab
(iOS En) WWDC26: Machine Learning & AI Group Lab
(iOS En) Safari Style Swipeable Tabbar Using SwiftUI
(iOS En) Adaptive TabView for iOS 27 (iPhone) Using SwiftUI
(iOS En) Build a Swift Terminal Developer Toolkit with TUIkit
(And En) Android 17 AOSP is here
(And En) What's new in Jetpack Compose
(And En) What's new in Android XR development
(And En) Lifecycle 2.11 Just Changed Android ViewModels FOREVER!
(And En) Migrating 25-year-old legacy code to Kotlin
(And En) Building androidskills.dev
(Dev Ru) Как пройти алгоритмическое собеседование в Яндексе
(Dev Ru) Внедрение AI в инженерные команды
(Dev Ru) Эволюция скилов в агентской разработке: сценарии использования и сравнение с МСР
(Dev Ru) Почему Al-агенты тормозят в больших кодовых базах из-за grep и как это исправить
(Dev Ru) Оживляем мобильное приложение с помощью LLM-агента
(Dev Ru) Обратная сторона AI в мобильной разработке
(Dev Ru) Как ИИ меняет разработчика, менеджера и всю индустрию — Денис Неклюдов
(Dev En) Why AI Will Likely Make Your Codebase BETTER
(Dev En) Build a Self-Healing CI/CD Pipeline with AI
(Mrk Ru) Малоизвестный приём ASO: как смена основного языка в App Store расширяет индексацию

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

(iOS Ru) Как перевезти 250+ SPM модулей из динамики в статику и не сойти с ума
(iOS Ru) Пагинация: от идеи до реализации
(iOS Ru) Стратегии ускорения старта на практике
(And Ru) Адаптация мобильного приложения под ТВ-платформы
(And Ru) Баттл codegen-инструментов от разработчиков дизайн-систем
(And Ru) История, принципы и концепции библиотеки навигации Decompose
(And Ru)Как ускоряют Android-приложения в Яндексе: интервью с инженером
(Crs Ru) Duit – как создать эффективный BDUI-фреймворк для Flutter
(Crs Ru) Аудит безопасности мобильных приложений
(Dev Ru) Как решать задачи на Leetcode

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

Работа с JSON в Swift обычно означает выбор между двумя крайностями. JSONSerialization из Foundation предоставляет вам тип Any и заставляет вас приводить и распаковывать данные на каждом шаге. Codable типобезопасен, но негибок: он ожидает, что ваши типы Swift будут точно соответствовать данным, и доступ к одному полю произвольного документа неудобен.

JBird закрывает этот пробел. Он моделирует JSON как первоклассное значение Swift, которое вы можете читать, обрабатывать и изменять напрямую — без потери типобезопасности — и сочетает эту модель с быстрым ядром парсинга на основе C. А когда вам нужно работать с конкретными типами Swift, JBird чисто преобразует их туда и обратно, подключая встроенный кодировщик и декодер Codable.

JBird на GitHub: https://github.com/vsanthanam/JBird
Платформа: iOS
⭐️: 18

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
«Это уже тысячу раз делали»: как мы добавили медиаленту в Яндекс Еду для iOS. А потом переделали

Самое интересное в таких задачах начинается не на этапе «как добавить медиаленту», а на этапе ограничений и деградаций. В статье я разберу именно эту сторону задачи на примере приложения Яндекс Еды: как мы проектировали медиаленту, какие архитектурные решения не сработали, какие баги всплыли только на реальных данных, как мы строили observability для дебага и какие компромиссы в итоге оказались эффективнее красивой реализации.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Как мы научились видеть иерархию корутин в Android‑приложении: Coroutine Tracer в библиотеке Demeter

Отладка корутин в Android — задача, с которой сталкивается каждый разработчик, использующий Kotlin. На один экран могут приходиться десятки вызовов launch и async, но стандартные инструменты показывают потоки, а не корутины. В итоге, когда одна из корутин зависает, разработчик оказывается в тупике: отладчик показывает живой поток, но не показывает, какая корутина на нём выполнялась, в каком suspend‑вызове она остановилась и кто её запустил. Приходится искать причину вслепую — расставлять логи и пытаться воспроизвести проблему вручную. 

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как мне удалось уменьшить размер классификатора болезней растений с 16 до 5 МБ с потерей точности менее 1%

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

Модель точная, но слишком большая и медленная для реального мира.

Обученная мной модель EfficientNetB0 достигла точности 96,33% на наборе данных PlantVillage с 15 классами. Отличный результат. Но модель весила около 16 МБ в формате float32. Для Android-смартфона среднего класса с нестабильным 4G-соединением и ограниченным объемом памяти это не идеально.

В этой статье я расскажу о том, что я сделал дальше. Я пропустил модель через три конвейера квантизации: FP16, INT8 и экспорт ONNX, измерил изменения точности, размера и задержки, а затем развернул лучший формат в Android-приложении, работающем полностью в автономном режиме.

Главный результат: квантизация INT8 уменьшила размер модели с 16 МБ до 5,25 МБ — снижение на 67% при потере всего 0,62% точности. Это тот компромисс, который делает реальное развертывание жизнеспособным.

Статья: https://apptractor.ru/info/articles/kak-mne-udalos-umenshit-razmer-klassifikatora-bolezney-rasteniy-s-16-do-5-mb-s-poterey-tochnosti-menee-1.html
Платформа: Android

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