AppFiles - Mobile Development
رفتن به کانال در Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
نمایش بیشتر2 165
مشترکین
-124 ساعت
اطلاعاتی وجود ندارد7 روز
+130 روز
آرشیو پست ها
Большинство приложений для Android нарушают это правило чистого кода!
Многие Android-разработчики неосознанно попадают в одну и ту же архитектурную ловушку — они помещают слишком много логики в классы фреймворков, такие как FirebaseMessagingService, BroadcastReceiver, Activity или Service. Поначалу это кажется быстрым и легким. Но вскоре код становится хрупким, его становится трудно тестировать и почти невозможно поддерживать.
В этой статье мы покажем, как избежать этой ловушки, применяя одно простое правило:
Делайте компоненты Android «тупыми».
Статья: https://apptractor.ru/info/articles/bolshinstvo-prilozheniy-dlya-android-narushayut-eto-pravilo-chistogo-koda.html
Платформа: Android
Создание фигур с помощью Path в представлении SwiftUI Canvas
В статье автор демонстрирует, как использовать Canvas и Path в SwiftUI для создания анимированных геометрических фигур.
Эта статья будет полезна разработчикам, интересующимся созданием динамических визуализаций и интерактивных интерфейсов в SwiftUI.
Статья: https://www.createwithswift.com/creating-shapes-using-path-in-the-swiftui-canvas-view/
Платформа: iOS
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Создание кастомного тултипа Jetpack Compose
В мире мобильной разработки удобство и интуитивность интерфейса играют ключевую роль. Одним из способов улучшения пользовательского опыта является предоставление дополнительной информации в нужный момент, и для этого идеально подходят тултипы.
В этой статье мы разберём, как создать гибкую и удобную систему тултипов в Jetpack Compose, используя модифайеры и специальный оборачивающий блок. Мы шаг за шагом рассмотрим создание необходимых компонентов, их взаимодействие и методы управления тултипом.
Статья: https://habr.com/ru/companies/wildberries/articles/905994/
Платформа: Android
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
Быстродействие прокрутки в SwiftUI - в погоне за 120 кадрами в секунду
SwiftUI может столкнуться с очень болезненными проблемами производительности при работе с бесконечно прокручиваемой лентой. Сегодня мы изучим эти проблемы производительности, поймем, почему они возникают, и рассмотрим методы их устранения, чтобы сделать производительность SwiftUI гладкой как масло Аннушки.
Статья: https://apptractor.ru/info/articles/swiftui-120.html
Платформа: 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
Rafinad: сахар для UI-тестирования iOS-приложений
Мы в hh очень любим UI-тесты, ими покрывается практически вся функциональность наших приложений, и даже backend-разработчики прогоняют тесты мобильных платформ перед развертыванием своих фич. Однако наши механизмы UI-тестирования разрабатывались более 8 лет назад и с тех пор почти не изменились.
Кто-то скажет, что старые решения прошли проверку временем и что «работает — не трогай»... Возможно, и так. Но сейчас мы внедряем новую дизайн-систему, а новые компоненты требуют адаптации всех тестов — не лучшее ли время для перемен?
Поэтому мы пересмотрели наши подходы к UI-тестированию и теперь готовы поделиться наработками с сообществом в виде open-source проекта — Rafinad. В этой статье расскажем, что он умеет и как им пользоваться.
Статья: https://habr.com/ru/companies/hh/articles/910380/
Платформа: iOS
NativePHP: создать невозможное и заработать $100 тыс. за первые три месяца
Саймон Хэмп создал то, о чем никто не думал - NativePHP, который позволяет разработчикам создавать десктопные и мобильные приложения на PHP.
Запустив мобильную версию три месяца назад, он уже заработал 100 тысяч долларов.
Саймон рассказывает, как ему это удалось.
Статья: https://apptractor.ru/info/articles/nativephp-sozdat-nevozmozhnoe-i-zarabotat-100-tys-za-pervye-tri-mesyatsa.html
Платформа: кроссплатформа
Vibe Lander - ретро-игра, сделанная с помощью Kotlin Multiplatform и Compose Multiplatform. Создано с применением Junie, ИИ-помощника от JetBrains? с использованием MVVM, Koin, корутин и Flow для реактивного управления состоянием.
Vibe Lander на GitHub: https://github.com/balch/lander
Платформа: Android
⭐️: 3
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
Как создать кастомный угловой бейдж в Jetpack Compose
В этой статье мы рассмотрим, как создать настраиваемый угловой бейдж в Jetpack Compose. Этот значок может быть особенно полезен для отображения скидок, ярлыков новых товаров или любых других отметок. Мы также позаботимся о том, чтобы содержимое значка было полностью настраиваемым.
Статья: https://apptractor.ru/info/articles/kak-sozdat-kastomnyy-uglovoy-beydzh-v-jetpack-compose.html
Платформа: Android
Открываем Konfeature, нашу open-source библиотеку для удобной работы с Feature Flags
Мы создали открытую библиотеку Konfeature для оптимизации работы с Feature Flags и хотим поделиться нашей разработкой.
Статья: https://habr.com/ru/companies/redmadrobot/articles/911972/
Платформа: Android
DebugSwift - это комплексный набор инструментов, предназначенный для упрощения и улучшения процесса отладки приложений на базе Swift. Устраняете ли вы неполадки или оптимизируете производительность, DebugSwift предоставляет набор мощных функций, которые сделают ваш опыт отладки более эффективным:
• Доступ к отчетам о сбоям
• Смена локации
• Логи приложения
• Замедление анимаций
• Сетевые логи
• Мониторинг CPU, памяти, FPS
• Доступ к Keychain и User Defaults
• И другое
DebugSwift на GitHub: https://github.com/DebugSwift/DebugSwift
Платформа: iOS
⭐️: 734
📺 Видео и подкасты за неделю на @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-интервьюШаблоны проектирования - важные инструменты, широко используемые при разработке программного обеспечения. Эти паттерны позволяют улучшить качество кода, его согласованность и возможность повторного использования, контролируя создание, сборку и взаимодействие объектов.
Jetpack Compose Design Patterns - различные шаблоны проектирования, реализованные в Jetpack Compose (и Compose Multiplatform). Показаны примеры их использования и интеграции в современную разработку для Android.
Jetpack Compose Design Patterns на GitHub: https://github.com/meticha/jetpack-compose-design-patterns
Платформа: Android
⭐️: 189
Унифицируем проверку форм с помощью TCA
В статье разработчик из AVIV делится опытом стандартизации валидации форм в приложениях iOS с использованием The Composable Architecture (TCA). Он подчеркивает, что при наличии множества форм в приложении важно избегать дублирования кода и несогласованности в логике валидации. Для решения этих проблем была разработана структура
FormValidationReducer, которая позволяет централизованно определять правила валидации для каждого поля формы, обеспечивая единообразие и упрощая тестирование. Это решение способствует более чистой архитектуре и облегчает масштабирование приложения.
Статья: https://medium.com/aviv-product-tech-blog/unifying-form-validation-using-tca-e582b919cc02
Платформа: iOSБольшое обновление DivKit: визуальный редактор, поддержка форм, аниматоры
Команда DivKit надеется, что новые фичи помогут пользователям фреймворка и облегчат повседневные задачи. А пока мы продолжаем развитие DivKit: сейчас наше внимание направлено на feature parity между платформами и обновление документации.
Статья: https://habr.com/ru/companies/yandex/articles/909300/
Платформа: разработка
Что нового в 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
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
