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

На Google I/O 2025  объявили о множестве обновлений функций, производительности, стабильности, библиотек и инструментов для Jetpack Compose, рекомендуемого инструментария для создания пользовательских интерфейсов для Android. С помощью Compose вы сможете создавать отличные приложения, которые будут работать на всех устройствах. С момента своего первого анонса (на Google I/O 2019!) Compose значительно усовершенствовался, и сейчас 60% из 1000 лучших приложений в Play Store, таких как MAX и Google Drive, используют и любят его.

Статья: https://apptractor.ru/info/articles/chto-novogo-v-jetpack-compose.html
Платформа: Android
Большое обновление DivKit: визуальный редактор, поддержка форм, аниматоры

Команда DivKit надеется, что новые фичи помогут пользователям фреймворка и облегчат повседневные задачи. А пока мы продолжаем развитие DivKit: сейчас наше внимание направлено на feature parity между платформами и обновление документации.

Статья: https://habr.com/ru/companies/yandex/articles/909300/
Платформа: разработка
👍1
Унифицируем проверку форм с помощью TCA

В статье разработчик из AVIV делится опытом стандартизации валидации форм в приложениях iOS с использованием The Composable Architecture (TCA). Он подчеркивает, что при наличии множества форм в приложении важно избегать дублирования кода и несогласованности в логике валидации. Для решения этих проблем была разработана структура FormValidationReducer, которая позволяет централизованно определять правила валидации для каждого поля формы, обеспечивая единообразие и упрощая тестирование. Это решение способствует более чистой архитектуре и облегчает масштабирование приложения.

Статья: https://medium.com/aviv-product-tech-blog/unifying-form-validation-using-tca-e582b919cc02
Платформа: iOS
🔥1
Шаблоны проектирования - важные инструменты, широко используемые при разработке программного обеспечения. Эти паттерны позволяют улучшить качество кода, его согласованность и возможность повторного использования, контролируя создание, сборку и взаимодействие объектов.

Jetpack Compose Design Patterns - различные шаблоны проектирования, реализованные в Jetpack Compose (и Compose Multiplatform). Показаны примеры их использования и интеграции в современную разработку для Android.

Jetpack Compose Design Patterns на GitHub: https://github.com/meticha/jetpack-compose-design-patterns
Платформа: Android
⭐️: 189
📺 Видео и подкасты за неделю на @AppFiles

(iOS Ru) Работа в Aviasales, уход в сторону от iOS, поиск информации
(iOS En) SwiftUI - Task Management App UI
(iOS En) Building Scrollable Tab View Using SwiftUI
(iOS En) How to Cancel a Task at anytime in Swift Concurrency
(iOS En) Mastering Custom Container Views in SwiftUI
(And Ru) Память в Android, утечки и OOM
(And En) What's new in Android
(And En) What's new in Google Play
(And En) What's new in Android development tools
(And En) Adaptive Android development makes your app shine across devices
(And En) Seamless video capture, editing and playback with CameraX and Media3
(And En) Building differentiated apps for Android XR with 3D content
(And En) Unlock user productivity with desktop windowing and stylus support
(And En) Finding the perfect Gemini fit on Android
(And En) Best practices for using web in your Android apps
(And En) New in-car app experiences
(And En) Mastering text input in Compose
(And En) Build next-level UX with Material 3 Expressive
(And En) Android notifications and Live Updates
(And En) Google Home APIs, tools, and Gemini capabilities for your apps
(And En) How You Get Your Compose UI From Hundreds of Recompositions to Almost Zero
(And En) KotlinConf'25 – Day 1 Livestream (Feat. Keynote)
(And En) Gradle Configuration Cache: 2x faster, 4x smaller, and ready for Gradle 9.0
(Crs Ru) Настраиваем навигацию во Flutter-приложении через AutoRoute
(Crs En) Demystify KMP builds and structure
(Dev Ru) Стажировок мало, а джуны должны уметь всё: как становятся ИТ-специалистом в 2025 году
(Dev Ru) Как тимлиду принимать сложные решения
(Dev Ru) Язык программирования будущего – английский: визионерство, LLM, новая парадигма

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

(iOS Ru) TOP 10 горячих клавиш для Xcode
(iOS Ru) Swift Plugins: ускоряем сборку проекта
(iOS Ru) Объединяем Combine и Swift Concurrency
(And Ru) Взлом и защита Android-приложений
(And Ru) Моментальный запуск: как VK Клипы работают с плейбэком видео на Android
(Dev Ru) Как собеседовать мобильных инженеров? Системный дизайн спешит на помощь! (все собеседования)
(Dev Ru) Проводим и проходим Mobile System Design-интервью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
DebugSwift - это комплексный набор инструментов, предназначенный для упрощения и улучшения процесса отладки приложений на базе Swift. Устраняете ли вы неполадки или оптимизируете производительность, DebugSwift предоставляет набор мощных функций, которые сделают ваш опыт отладки более эффективным:

• Доступ к отчетам о сбоям
• Смена локации
• Логи приложения
• Замедление анимаций
• Сетевые логи
• Мониторинг CPU, памяти, FPS
• Доступ к Keychain и User Defaults
• И другое

DebugSwift на GitHub: https://github.com/DebugSwift/DebugSwift
Платформа: iOS
⭐️: 734
👍2
Красивый код
😁5🤝3
Открываем Konfeature, нашу open-source библиотеку для удобной работы с Feature Flags

Мы создали открытую библиотеку Konfeature для оптимизации работы с Feature Flags и хотим поделиться нашей разработкой.

Статья: https://habr.com/ru/companies/redmadrobot/articles/911972/
Платформа: Android
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Как создать кастомный угловой бейдж в Jetpack Compose

В этой статье мы рассмотрим, как создать настраиваемый угловой бейдж в Jetpack Compose. Этот значок может быть особенно полезен для отображения скидок, ярлыков новых товаров или любых других отметок. Мы также позаботимся о том, чтобы содержимое значка было полностью настраиваемым.

Статья: https://apptractor.ru/info/articles/kak-sozdat-kastomnyy-uglovoy-beydzh-v-jetpack-compose.html
Платформа: Android
1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Colibri: полностью декларативный и Тьюринг-полный язык, скрывающийся внутри системы типов Swift

Статья о Colibri — декларативном языке, скрытом внутри типовой системы Swift. Это не просто интересный эксперимент, а полноценный подход к разработке, который использует возможности Swift для создания выразительных и мощных решений.

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

Особенно впечатляет реализация игры "Жизнь" Конвея с помощью Colibri. Это доказывает, что типовая система Swift обладает тьюринг-полнотой, позволяя моделировать сложные вычисления без явного управления состоянием.

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

Статья: https://decodemeester.medium.com/colibri-the-fully-declarative-and-turing-complete-language-lurking-inside-swifts-type-system-9adfa27ce5ca
Платформа: iOS
1👍1
Vibe Lander - ретро-игра, сделанная с помощью Kotlin Multiplatform и Compose Multiplatform. Создано с применением Junie, ИИ-помощника от JetBrains, с использованием MVVM, Koin, корутин и Flow для реактивного управления состоянием.

Vibe Lander на GitHub: https://github.com/balch/lander
Платформа: Android
⭐️: 3
NativePHP: создать невозможное и заработать $100 тыс. за первые три месяца

Саймон Хэмп создал то, о чем никто не думал - NativePHP, который позволяет разработчикам создавать десктопные и мобильные приложения на PHP.

Запустив мобильную версию три месяца назад, он уже заработал 100 тысяч долларов.

Саймон рассказывает, как ему это удалось.

Статья: https://apptractor.ru/info/articles/nativephp-sozdat-nevozmozhnoe-i-zarabotat-100-tys-za-pervye-tri-mesyatsa.html
Платформа: кроссплатформа
Rafinad: сахар для UI-тестирования iOS-приложений

Мы в hh очень любим UI-тесты, ими покрывается практически вся функциональность наших приложений, и даже backend-разработчики прогоняют тесты мобильных платформ перед развертыванием своих фич. Однако наши механизмы UI-тестирования разрабатывались более 8 лет назад и с тех пор почти не изменились.

Кто-то скажет, что старые решения прошли проверку временем и что «работает — не трогай»... Возможно, и так. Но сейчас мы внедряем новую дизайн-систему, а новые компоненты требуют адаптации всех тестов — не лучшее ли время для перемен?

Поэтому мы пересмотрели наши подходы к UI-тестированию и теперь готовы поделиться наработками с сообществом в виде open-source проекта — Rafinad. В этой статье расскажем, что он умеет и как им пользоваться.

Статья: https://habr.com/ru/companies/hh/articles/910380/
Платформа: iOS
FCM для Android и Backend на Kotlin

Firebase Cloud Messaging (FCM) — это бесплатный (или почти) облачный сервис от Google, который позволяет отправлять push-уведомления и сообщения напрямую на устройства Android, iOS и веб-приложения. FCM широко используется для реализации мгновенных уведомлений, оповещений о событиях, маркетинговых рассылок и других сценариев, где требуется быстрая доставка сообщений пользователям.

В этой статье мы рассмотрим, как интегрировать FCM в Android-приложение на Kotlin и как настроить отправку push-уведомлений с небольшого, похожего backend, сервера, написанного на Kotlin. Вы узнаете, как подключить Firebase к вашему проекту, реализовать обработку входящих сообщений на устройстве, а также научитесь отправлять push-уведомления на выбранные устройства.

Статья: https://habr.com/ru/articles/912710/
Платформа: Android
Быстродействие прокрутки в SwiftUI - в погоне за 120 кадрами в секунду

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

Статья: https://apptractor.ru/info/articles/swiftui-120.html
Платформа: iOS
👍1
SUICoordinator - библиотека SwiftUI, обеспечивающая мощное управление навигацией и координацию на основе вкладок для iOS-приложений. SUICoordinator обеспечивает чистое разделение проблем, отделяя логику навигации от представлений, что делает SwiftUI-приложения более удобными в обслуживании и масштабируемыми.

Ключевые особенности

• Чистый SwiftUI: Никаких зависимостей от UIKit - построен полностью на SwiftUI
• Паттерн координатор: Чистое отделение логики навигации от представлений
• Координация вкладок: Расширенная навигация на основе вкладок с помощью TabCoordinator, кастомных представлений и бейджей
• Гибкие презентации: Поддержка push, sheet, fullscreen, detents и кастомных презентаций
• Глубокое связывание: Возможности принудительного представления для push-уведомлений и внешних триггеров
• Типобезопасные маршруты: Сильно типизированные маршруты навигации с безопасностью при компиляции
• Асинхронная навигация: Полная поддержка async/await для плавной навигации
• Кастомные панели вкладок: создание полностью кастомных интерфейсов вкладок с помощью TabCoordinator
• Поддержка бейджей: Динамическое управление бейджами для элементов вкладок в TabCoordinator
• Управление памятью: Автоматическая очистка и управление ресурсами

SUICoordinator на GitHub: https://github.com/felilo/SUICoordinator
Платформа: iOS
⭐️: 79
👍1
Создание кастомного тултипа Jetpack Compose

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

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

Статья: https://habr.com/ru/companies/wildberries/articles/905994/
Платформа: Android
👍1
VPAT для Android

Инженер-программист Хе Джун Чой делится опытом проведения оценки доступности Android-приложения Slack с использованием шаблона VPAT (Voluntary Product Accessibility Template).

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

В 2024 году, после значительных изменений в пользовательском интерфейсе, Slack привлек стороннего поставщика для проведения оценки доступности. В результате было выявлено 542 проблемы: 135 на Android, 163 на iOS и 244 на десктопе. Очевидные проблемы, такие как контрастность цветов и отсутствие подписей к изображениям, были немедленно переданы соответствующим командам для устранения.

Основные темы и решения

В статье подробно рассматриваются основные проблемы доступности на Android и способы их решения:

• Недоступные сообщения об ошибках: Обновлены компоненты OutlinedTextField и SKBanner, чтобы ошибки озвучивались с помощью TalkBack.
• Отсутствие заголовков: Добавлены семантические заголовки в списки, такие как страница настроек.
• Отсутствие меток доступности у полей ввода: Обеспечено наличие постоянных меток, а не только заполнительного текста.
• Ошибки, обозначенные только цветом: Добавлены дополнительные индикаторы для пользователей с нарушениями зрения.
• Некоторые проблемы, связанные с навигацией с клавиатуры на устройствах с большим экраном (например, планшетах), были отложены, так как Slack для Android пока не поддерживает такие устройства.

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

Статья: https://slack.engineering/android-vpat-journey/
Платформа: Android
1👍1
Создание фигур с помощью Path в представлении SwiftUI Canvas

В статье автор демонстрирует, как использовать Canvas и Path в SwiftUI для создания анимированных геометрических фигур.

Эта статья будет полезна разработчикам, интересующимся созданием динамических визуализаций и интерактивных интерфейсов в SwiftUI.

Статья: https://www.createwithswift.com/creating-shapes-using-path-in-the-swiftui-canvas-view/
Платформа: iOS
👍1🔥1
Большинство приложений для Android нарушают это правило чистого кода!

Многие Android-разработчики неосознанно попадают в одну и ту же архитектурную ловушку — они помещают слишком много логики в классы фреймворков, такие как FirebaseMessagingService, BroadcastReceiver, Activity или Service. Поначалу это кажется быстрым и легким. Но вскоре код становится хрупким, его становится трудно тестировать и почти невозможно поддерживать.

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

Делайте компоненты Android «тупыми».

Статья: https://apptractor.ru/info/articles/bolshinstvo-prilozheniy-dlya-android-narushayut-eto-pravilo-chistogo-koda.html
Платформа: Android
1
Институциональные покупки: понимание и обнаружение

Всплеск загрузок, вызванный институциональными покупками (Institutional Purchases), видимыми в App Store Connect, приводит в замешательство многих разработчиков приложений. Несколько сообщений на Reddit или форумах Apple пытаются ответить на вопрос, что это такое, но путаницы с ними по-прежнему много. Программа Apple Volume Purchase Program (VPP) имеет отношение к институциональным покупкам и приводит к измененному поведению вашего приложения.

Что такое институциональные покупки и что вы должны делать с ними по-другому?

Статья: https://apptractor.ru/info/articles/institutsionalnye-pokupki-ponimanie-i-obnaruzhenie.html
Платформа: iOS