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

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

Статья: https://apptractor.ru/info/articles/ios-solid.html
Платформа: iOS
👍1
10 лучших шаблонов Jetpack Compose, которые должен знать каждый Android-разработчик

Независимо от того, являетесь ли вы поклонником Compose или всё ещё пытаетесь понять, что рекомпозиции — это не какие-то штуки из мультивселенной Marvel, эти шаблоны облегчат вам жизнь.

1. Подъем состояния
2. Однонаправленный поток данных (UDF)
3. Слотовые API
4. Интеграция ViewModel + StateFlow
5. Stateless vs Stateful композабл
6. Scaffold для макетов
7. DerivedStateOf для производной UI-логики
8. Помните о Saveable
9. Ключевые эффекты с LaunchedEffect
10. Кастомные модификаторы для согласованности

Статья: https://apptractor.ru/info/articles/10-jetpack-compose-patterns.html
Платформа: Android
👎3🫡3👍1
Position - это готовая к Swift 6 библиотека определения местоположения на основе акторов для iOS и macOS с современными async/await API и поддержкой AsyncSequence.

Главные преимущества: полная поддержка параллелизма Swift 6 с изоляцией акторов, современный async/await, реактивные обновления местоположения, направления и авторизации, потокобезопасность по умолчанию с поддержкой параллелизма Swift, настраиваемая точность определения местоположения и т.п.

Position на GitHub: https://github.com/piemonte/Position
Платформа: iOS
⭐️: 87
Рисуем чайник в Metal

Сегодня научимся рендерить 3D модель чайника при помощи Metal API. В процессе познакомимся с устройством модели, настроим пайплайн Metal и напишем шейдеры.

Статья: https://habr.com/ru/articles/930894/
Платформа: iOS
Работа с телевизионными каналами на Android TV: учимся использовать TIF в 2025. Стартовый гайд для разработчиков

При создании приложения под Android TV у вас наверняка могут возникнуть вопросы: как получить доступ к списку телевизионных каналов и как организовать у себя трансляцию? В этом материале я отвечу на них и расскажу про взаимодействие с телевизором с помощью Android TV Input Framework (TIF), а также получение через него списка доступных каналов. По сути это первый шаг к созданию полноценного TV-приложения.

Статья: https://habr.com/ru/companies/ru_mts/articles/928726/
Платформа: Android
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Взгляд на мой процесс отладки (с реальными примерами)

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

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

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

Статья: https://apptractor.ru/info/articles/vzglyad-na-moy-protsess-otladki-s-realnymi-primerami.html
Платформа: iOS
👍2
Шифруем базу данных Room в Android с помощью SQLCipher

Локальные базы данных могут стать настоящей золотой жилой для злоумышленников. Именно поэтому шифрование базы данных Room — это важный шаг к защите пользовательских данных. В этой статье я расскажу вам о готовом к использованию и безопасном подходе к шифрованию базы данных Room с помощью SQLCipher, Android Keystore и некоторых правил криптографической гигиены.

Статья: https://apptractor.ru/info/articles/encrypt-your-room-database.html
Платформа: Android
Liquid Glass - эффект "жидкого стекла" для Android Jetpack Compose. Библиотека находится в стадии альфа-версии, каждый API может быть изменен, используйте ее на свой страх и риск.

Liquid Glass на GitHub: https://github.com/Kyant0/AndroidLiquidGlass
Платформа: Android
⭐️: 624
Под капотом Android: как создаются, управляются и восстанавливаются процессы приложений в системе

Эта статья родилась из практической задачи — понять, как устроен Android в общем и целом, как он сохраняет и восстанавливает состояния приложения (помимо БД и файлов) при внезапном завершении процесса, как управляет процессами. Знание этих механизмов критично для:

• Разработчиков, создающих свои ОС на базе AOSP.
• Понимания жизненного цикла приложений на глубоком уровне.
• Корректной реализации сохранения/восстановления состояния (Bundle, ViewModel с SavedStateHandle).

Статья: https://habr.com/ru/companies/psb/articles/931712/
Платформа: Android
👍2
PokedexUI - это пример современного приложения на SwiftUI. Оно интегрируется с PokeAPI для получения и отображения данных о покемонах, используя чистую реактивную архитектуру с использованием async/await и Swift Concurrency.

Этот пример приложения демонстрирует:

• Сеточный пользовательский интерфейс с LazyVGrid и плавной прокруткой;
• Асинхронную загрузку изображений и извлечение доминирующего цвета;
• Чистую архитектуру Model + View + ViewModel (MVVM) с SOLID;
• Современную сетевую абстракцию с использованием async/await и фреймворка Networking;
• Настраиваемые переходы и эффекты согласованной геометрии;
• Композицию представлений с использованием protocol-oriented моделей представлений;
• Поиск и фильтрацию покемонов;
• Бесконечную прокрутку.

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

PokedexUI на GitHub: https://github.com/brillcp/PokedexUI
Платформа: iOS
⭐️: 70
Навигация SwiftUI: объяснение NavigationStack, Deep Linking и TabView

SwiftUI значительно усовершенствовал навигацию во фреймворке с появлением NavigationStack и переходом от привычного NavigationView. Теперь управление навигацией строится не вокруг представлений (views), а вокруг значений (values). Важно понять: NavigationStack не просто переименованная версия NavigationView, а мощный инструмент для построения сложных сценариев переходов между экранами. Вместе с NavigationPath разработчик получает полный контроль над навигацией, включая программное перемещение по стеку и поддержку deep linking — обработки ссылок, ведущих пользователя сразу к нужному экрану внутри приложения. Такой подход особенно полезен для сложных приложений с множеством состояний и переходов между экранами.

Помимо NavigationStack, в статье отдельное внимание уделено TabView — классическому решению для построения таб-ориентированных приложений. Современная архитектура SwiftUI позволяет объединять TabView с NavigationStack, обеспечивая сохранение навигационного состояния внутри каждой вкладки. Это упрощает реализацию профессиональных и масштабируемых интерфейсов с поддержкой глубоких переходов (deep linking) и минимизацией типичных “подводных камней” SwiftUI-навигирования. Понимание этих инструментов экономит часы на отладку и делает код более структурированным и поддерживаемым.

Статья: https://swift-pal.com/swiftui-navigation-navigationstack-deep-linking-and-tabview-explained-0f905bbb20d4 (как читать ©)
Платформа: iOS
Функциональное программирование в Android. Побочные эффекты и ELM-архитектура

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

Статья: https://habr.com/ru/companies/dododev/articles/927100/
Платформа: Android
Новый взгляд на Default Actor Isolation в Swift 6.2

После включения строгой проверки конкурентности многие разработчики обнаружили, что их рабочий однопоточный код начинает выбрасывать предупреждения и ошибки — несмотря на явную работу с MainActor. Это происходило потому, что до Swift 6.2, если у функции или типа не было указания области изоляции (isolation domain), компилятор рассматривал их как "non-isolated" (можно использовать конкуррентно). Для железной гарантии компилятор требовал отдельные аннотации, даже если весь модуль работал на MainActor.

Default Actor Isolation (SE-0466) теперь позволяет установить область изоляции по умолчанию на уровне Target — чаще всего это будет MainActor. Весь код без явных аннотаций автоматически будет считаться изолированным к MainActor, а ненужных деклараций станет меньше. Default Actor Isolation не только облегчает жизнь при строгой проверке конкурентности, но и подталкивает к модульному проектированию — ведь для разных Targets можно устанавливать разные области изоляции.

Итог: Default Actor Isolation в Swift 6.2 снижает «болезненность» внедрения строгой конкурентности, автоматизируя то, что раньше требовало от разработчиков рутинной работы. Однако для сложных или гибридных сценариев все еще надо помнить о нюансах и ограничениях новых опций.

Статья: https://fatbobman.com/en/posts/default-actor-isolation/
Платформа: iOS
Как создавать BLE-приложения под Android — личный опыт

Bluetooth Low Energy (BLE) — это энергоэффективный протокол передачи данных, который подходит для устройств с малым энергопотреблением, таких как фитнес-трекеры или датчики. В основе BLE лежит протокол GATT, организующий обмен данными через сервисы и характеристики. Разработка BLE-приложений на Android сопряжена с особенностями: нестабильностью соединений, сложным управлением правами доступа и особенностями разных устройств.

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

Статья: https://medium.com/codetodeploy/building-ble-apps-in-android-a-developers-journey-c1ecc04d6bdf (как читать ©)
Платформа: Android
YA Habit Tracker - простой, но современный трекер привычек для Android. Технологии: Compose, Hilt, Room, Reorderable  и Navigation 3.

YA Habit Tracker на GitHub: https://github.com/zaved707/Yet-Another-Habit-Tracker
Платформа: Android
⭐️: 22
📺 Видео и подкасты за неделю на @AppFiles

(iOS En) Custom Liquid Morphing Menu Effect
(iOS En) Create Beautiful Liquid Glass: iOS 26 & SwiftUI in Figma & Xcode 26
(iOS En) Supercharge Your SwiftUI App with SF Symbols & Emoji Pickers
(iOS En) Liquid Glass Morphing Effects Using SwiftUI
(And Ru) Нюансы работы Android Runtime в сравнении с HotSpot VM
(And Ru) Как Google тайно изменил Android на глазах у всех: Project Mainline
(And En) WearOS Material 3 shape morphing
(And En) Compose Prototyping in Kotlin Notebooks
(And En) Writing Your Third Kotlin Compiler Plugin
(And En) Kotlin compatibility crash course
(And En) Compose draw speedrun - reloaded
(And En) Gradle 9.0.0 is Live - What's new? Configuration Cache, Java 17, Kotlin 2, and more
(And En) Gradle Build Cache - Deliver faster by doing less
(Crs En) The Easing Symphony: AnimationSpec in detail
(Crs En) Using Previews with Compose Multiplatform
(Dev Ru) Запись Avito Mobile Meetup
(Dev Ru) Как работает синтез речи: от робота до живого голоса — синтез речи, TTS
(Dev En) What is a Mobile Platform Engineer? 4 Years of Real Experience
(Mrk Ru) Заработок на AI-фоторедакторах и аватарах. iOS. Подписки. Разбор ниши

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

(iOS Ru) Почему Metal перестал быть страшным
(iOS Ru) Локализация iOS-приложения за 1$ в 2024 году
(And Ru) Нужно ли учить Java для Android-разработки в 2024
(Vrs Ru) KMP на ОС Аврора: проблемы и пути их решения
(Dev Ru) Алгоритмическая сессия на собеседовании (все собеседования)
(Dev Ru) Автоматическая генерация верстки под Server-driven UI из макетов Figma
(Dev Ru) Учимся договариваться о деньгах — Офферы, Зарплаты, Повышение
Please open Telegram to view this post
VIEW IN TELEGRAM
AsyncGraphics - это пакет Swift для редактирования изображений и видео с использованием async/await и Metal. С его помощью вы можете применять эффекты или изменять графику в реальном времени с помощью Metal, рисовать с помощью примитивов, осуществлять компоновку и верстку, встраивать графику во View, работать с камерой, писать свои Metal-шейдеры на высоком уровне без ручной настройки пайплайна и т.д.

AsyncGraphics на GitHub: https://github.com/heestand-xyz/AsyncGraphics
Платформа: iOS
⭐️: 380
👍1
Все видео droidcon NYC 2025

Всего 61 видео. Все доступны на сайте DroidCon.

Сайт: https://www.droidcon.com/content/?filter_postyear=2025&filter_post_event_tag=droidcon-new-york
Платформа: Android
Стриминг изменений с помощью Observations

Появление типа Observations знаменует собой значительное улучшение возможностей Swift по наблюдению за данными, особенно для разработчиков, использующих Swift Concurrency. Он стирает разрыв между реактивными обновлениями и современными асинхронными шаблонами, упрощая создание понятных, эффективных и отзывчивых пользовательских интерфейсов.

Статья: https://apptractor.ru/info/articles/observations.html
Платформа: iOS
Кто такой Mobile Platform Engineer

Mobile Platform Engineer — это инженер, который создает и поддерживает внутренние инструменты, библиотеки и архитектуры, позволяя мобильным командам быстрее и стабильнее выпускать продукт. Его «пользователи» — это другие разработчики, а задачей становится автоматизация процессов, стандартизация инфраструктуры и управление качеством, чтобы избавить команду от рутинных технических проблем.

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

Статья: https://www.mobilesystemdesign.com/blog/what-is-a-mobile-platform-engineer/
Платформа: разработка

Поставьте 👍, если хотите эту статью на русском!
2
Flocon — это продвинутый инструмент отладки и проверки Android-приложений, созданный по мотивам Flipper.

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

Flocon SDK - легковесная библиотека всего 140 Кб. Flocon Desktop — это проект Kotlin Multiplatform, структурированный аналогично Android-приложению с использованием ViewModels, Room, Ktor и корутин. 

С Flocon вы получаете полный доступ к критически важным внутренним компонентам приложения, таким как

• сетевые запросы (http, изображения, grpc, graphql)
• локальное хранилище (sharedpref, базы данных, файлы приложения)
• аналитические события (и кастомные события)
• меню отладки, отображаемое на рабочем столе
• глубокие ссылки

И многое другое — без необходимости иметь root-доступ или выполнять утомительные команды ADB. Он разработан для ускорения процессов разработки, контроля качества и отладки.

Flocon на GitHub: https://github.com/openflocon/Flocon
Платформа: Android
⭐️: 119
👍1