AppFiles - Mobile Development
Open in Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Show more2 166
Subscribers
+424 hours
-27 days
+730 days
Posts Archive
ProjectGuard - защита проекта от нежелательных зависимостей
ProjectGuard - плагин Gradle, который выступает в роли мощного привратника для зависимостей вашего проекта. Он помогает вам соблюдать архитектурные правила, предотвращать нежелательные зависимости и поддерживать чистоту и удобство сопровождения графа модулей по мере масштабирования проекта.
Ключевые фичи:
• Простой DSL: настройте все правила в одном блоке конфигурации Gradle.
• Управление внешними библиотеками: используйте каталоги версий Gradle (libs) для обеспечения безопасности на этапе компиляции и автозавершения кода в IDE.
• Отчеты об использовании зависимостей: сгенерируйте подробный HTML-отчет, который четко показывает все нарушения зависимостей, что упрощает их выявление и исправление.
• Интеграция с CI/CD: завершайте сборку с ошибкой при нарушении правила, гарантируя, что проблемные зависимости не попадут в вашу основную ветку.
• Поддержка базовых версий: не хотите исправлять все существующие нарушения сразу? Создайте базовый файл, чтобы игнорировать их и сосредоточиться на предотвращении новых проблем.
• Граф Mermaid для визуализации: проверьте граф зависимостей для каждого модуля вашего проекта.
ProjectGuard на GitHub: https://github.com/rubensousa/ProjectGuard
Платформа: Android
⭐️: 51
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
📺 Видео и подкасты за неделю
•
(iOS En) iOS Style Permission Animation Using SwiftUI
• (iOS En) Swift Autoclosures - From First Principles to Smarter SwiftUI Validation
• (And En) Android Developer fireside chat: Talking about Gemini in Android Studio
• (And En) Senior Developer Ranks Jetpack Compose State Management Approaches
• (And En) Intro to Kotlin's Flow API
• (And En) Automating governance from build to release with Gradle and JFrog
• (Crs En) How Major Metros Run on Kotlin Multiplatform
• (Crs En) Tap to Exit with Navigation 3 - Kotlin Multiplatform (Android/iOS)
• (Dev Ru) От языков программирования к Developer Experience
• (Dev Ru) Волновая архитектура на практике
• (Dev Ru) OCaml – лучший функциональный язык: OCaml vs Haskell vs TypeScript
• (Dev En) Learn Kubernetes in 6 Hours – Full Course with Real-World Project
Прошлогодние видео:
• (iOS Ru) Переходим на SwiftUI
• (And Ru) Производительность sequence, stream и collection в JVM
• (And Ru) Непростые вопросы про Kotlin Coroutines
• (And Ru) Наш опыт внедрения Compose в большой проект
• (And Ru) Многомодульность: что это такое?
• (And Ru) Жизнь инди в Google Play
• (Dev Ru) Архитектурный надзор и анализ трейсов в АвитоCalf - адаптивные пользовательские интерфейсы в Compose Multiplatform
Calf — это библиотека, которая позволяет легко создавать адаптивные пользовательские интерфейсы и получать доступ к API, специфичным для каждой платформы (UI-элементы, выбор файлов, WebView, разрешения, уведомления и т.п.), из ваших приложений Compose Multiplatform.
В настоящее время основное внимание уделяется Android и iOS, но в будущем появятся и другие компоненты для десктопов, позволяющие создавать адаптивные пользовательские интерфейсы и для этих платформ (Windows, macOS, Linux).
Calf на GitHub: https://github.com/MohamedRejeb/Calf
Платформа: Android/кроссплатформа
⭐️: 1.5K
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Payo - управление покупками и подписками в iOS-приложении
Самый простой способ добавить подписки в ваше iOS-приложение. Это легковесный iOS SDK, созданный на основе StoreKit 2, который обрабатывает управление подписками, контроль доступа и процессы покупок — так что вы можете сосредоточиться на разработке своего приложения.
Особенности:
• Автоматическое определение — Передавайте идентификаторы продуктов, Payo автоматически определяет типы подписок, периоды и цены из StoreKit
• Синхронные проверки доступа — Payo.hasAccess мгновенно возвращает Bool, await не требуется
• Реактивное состояние SwiftUI — Payo.state — это ObservableObject, который автоматически обновляется при покупках, восстановлении, продлении и истечении срока действия
• Ограничение доступа к представлениям в одну строку — .requiresAccess() добавляет наложение blur + lock к любому представлению SwiftUI или UIView
• Право на участие в вводном предложении — Проверьте, имеют ли пользователи право на бесплатные пробные периоды или скидки на первый период
• Управление и возврат средств — Откройте встроенные в Apple панели управления подписками и возвратами
• Многоуровневая поддержка — Ограничение доступа к функциям за именованными группами для приложений с несколькими уровнями тарифных планов
• Нулевой код конфигурации — Просто добавьте файл Payo.plist, и SDK автоматически настроится при запуске
Payo на GitHub: https://github.com/PayoSDK/payo-ios
Платформа: iOS
⭐️: 3
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Кастомные параметры и анимация с использованием шейдеров Metal
Настоящий творческий контроль начинается, когда мы выходим за рамки автоматической обработки и начинаем передавать собственные данные в шейдер.
В этой статье мы рассмотрим, как передавать пользовательские параметры из SwiftUI в Metal, создавать процедурные паттерны, такие как настраиваемая шахматная доска, управлять шейдерами с помощью анимации на основе времени и использовать математические функции для создания плавного, непрерывного движения.
Статья: https://apptractor.ru/info/articles/kastomnye-parametry-i-animatsiya-s-ispolzovaniem-sheyderov-metal.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Вы думали, что Flutter обладает производительностью, близкой к нативной? А вот и нет!
Результаты бенчмарка говорят об обратном.
Используя современные инструменты 2025 года, реальные устройства и повторяемую методологию, Flutter не просто не отставал от нативных iOS и Android. По нескольким ключевым показателям он их значительно превзошёл.
И не на погрешность округления.
Статья: https://apptractor.ru/info/articles/vy-dumali-chto-flutter-obladaet-proizvoditelnostyu-blizkoy-k-nativnoy-a-vot-i-net.html
Платформа: кроссплатформа/Flutter
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Бэкдоры в фальшивых собеседованиях
Злоумышленники проводят фальшивые собеседования для разработчиков и отправляют «тестовые задания» в виде репозиториев с вредоносным кодом. Проекты выглядят как обычные приложения (например, на Next.js), но при запуске устанавливают бэкдор и подключаются к серверу управления (C2). Таким образом атакующие получают удалённый доступ к машине жертвы
Вредоносный код активируется через привычные для разработчика механизмы: автоматические задачи VS Code (
.vscode/tasks.json), скрытые скрипты в файлах проекта (например, замаскированные под jquery.min.js) и серверный код, выполняющий декодированные команды при старте приложения. В результате на устройстве закрепляется бэкдор, способный выполнять команды и передавать данные злоумышленникам
Основной риск — компрометация рабочей среды: утечка API-ключей, токенов, секретов из .env, исходного кода и доступа к корпоративной инфраструктуре. В качестве защиты рекомендуется запускать тестовые задания в изолированной среде (VM или контейнере), проверять конфигурационные файлы перед запуском и тщательно верифицировать работодателя через официальные каналы.
Статья: https://threatroad.substack.com/p/fake-job-interviews-are-installing 🇬🇧
Платформа: разработка
Поставь 👍 или пошарь пост, если хочешь перевод
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьApp Store Connect CLI - быстрая работа с App Store Connect API
App Store Connect CLI - быстрая, легковесная, со скриптами CLI-утилита для работы с App Store Connect API. Автоматизируйте рабочие процессы выпуска iOS, macOS, tvOS и visionOS из терминала, IDE или конвейера CI/CD. Работайте с TestFlight, сборками, отправкой, подписанием, аналитикой, скриншотами, подписками и многим другим. JSON-ориентированный подход, без интерактивных промптов.
App Store Connect CLI на GitHub: https://github.com/rudrankriyam/App-Store-Connect-CLI
Платформа: iOS
⭐️: 2.3K
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
От Dagger к Metro
Metro — современный фреймворк для внедрения зависимостей в Kotlin, созданный Заком Свирсом. И мы, Android-разработчики из Vinted, официально и полностью перешли на него! Для нашей огромной кодовой базы это был довольно непростой путь.
Статья: https://apptractor.ru/info/articles/ot-dagger-k-metro.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сейчас писать код дешево
Самая большая проблема при внедрении методов агентной инженерии — это смириться с последствиями того факта, что написание кода теперь обходится дёшево.
Код всегда был дорогим. Написание нескольких сотен строк чистого, протестированного кода занимает у большинства разработчиков программного обеспечения целый день или даже больше. Многие наши инженерные привычки, как на макро-, так и на микроуровне, построены вокруг этого основного ограничения.
На макроуровне мы тратим много времени на проектирование, оценку и планирование проектов, чтобы гарантировать, что наше дорогостоящее время, затраченное на кодирование, используется максимально эффективно. Идеи функций оцениваются с точки зрения того, какую ценность они могут принести в обмен на это время — функция должна многократно окупить затраты на разработку, чтобы быть стоящей!
На микроуровне мы принимаем сотни решений в день, основываясь на доступном времени и ожидаемых компромиссах. Стоит ли мне переписать эту функцию, сделав её немного более элегантной, если это добавит ещё час времени на кодирование? А как насчёт написания документации? Стоит ли добавлять тест для этого граничного случая? Могу ли я оправдать создание интерфейса отладки для этого?
Использование программных агентов значительно снижает затраты на ввод кода в компьютер, что разрушает многие из наших существующих личных и организационных представлений о том, какие компромиссы оправданы.
Возможность параллельного запуска агентов еще больше затрудняет оценку, поскольку один инженер-человек теперь может одновременно внедрять, рефакторить, тестировать и документировать код в нескольких местах.
Статья: https://apptractor.ru/info/articles/seychas-pisat-kod-deshevo.html
Платформа: разработка
Создание тоста в SwiftUI за 5 шагов
В SwiftUI до сих пор нет встроенного компонента для всплывающих уведомлений (toast ). Существуют оповещения (alert) и всплывающие окна (sheet), но они, по своей сути, являются модальными. Тост решает другую проблему: оно предоставляет кратковременную обратную связь, не прерывая рабочий процесс пользователя.
В этой статье я расскажу о практическом способе реализации всплывающего уведомления в SwiftUI. Решение является лёгким, многоразовым и работает поверх всего пользовательского интерфейса приложения.
Статья: https://apptractor.ru/info/articles/sozdanie-tosta-v-swiftui-za-5-shagov.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Code On The Go - среда разработки Android-приложений
Code on the Go — это интегрированная среда разработки, которая позволяет создавать приложения для Android на телефонах Android без необходимости использования традиционного компьютера или доступа в Интернет.
Это ранняя, экспериментальная версия IDE. Этот релиз предназначен для разработчиков Android, которые готовы тестировать черновой вариант программного обеспечения и предоставлять конструктивную обратную связь.
Code on the Go на GitHub: https://github.com/appdevforall/CodeOnTheGo
Платформа: Android
⭐️: 1
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Ваше iOS-приложение не закончено, если им не может пользоваться незрячий: Гайд по Accessibility
Это руководство создано не для того, чтобы вы просто поставили галочку в Jira. Мы поговорим о том, как код может стать мостом или стеной для миллионов людей.
Статья: https://habr.com/ru/articles/1002142/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0
Todo Budget — это приложение-комбайн: список задач с приоритетами и подзадачами, учёт доходов/расходов/долгов, помодоро-таймер и заметки с голосовым вводом. Стек: Kotlin + Jetpack Compose + Material 3 + Room + Yandex Ads. Минимальная версия Android 5.0 (API 21), целевая — Android 15 (API 35).
После публикации предыдущей версии я получил обратную связь: пользователи хотели больше аналитики, защиту данных и возможность не потерять контекст работы при сворачивании приложения. Я решил не выпускать фичи по одной, а собрать всё в один большой релиз.
Статья: https://habr.com/ru/articles/1003034/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Настройка конвейера доставки для ваших агентских iOS-проектов
В этом посте я хочу рассказать вам о конвейере, который я использую, чтобы, несмотря на использование агентного подхода к разработке, качество моего продукта оставалось на высоком уровне (да, это включает в себя чтение кода и иногда ручную корректировку).
Мы рассмотрим настройку локальной среды, почему важен режим планирования, автоматизированные проверки запросов на слияние с помощью BugBot от Cursor, запуск сборок и тестов CI с помощью Bitrise, а также волшебство почти мгновенной загрузки сборок TestFlight на ваше устройство после слияния.
Статья: https://apptractor.ru/info/articles/nastroyka-konveyera-dostavki-dlya-vashih-agentskih-ios-proektov.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Refreshable - pull-to-refresh для UIScrollView
Современная, легковесная библиотека Swift, предоставляющая pull-to-refresh функции и загрузки дополнительных элементов для UIScrollView и всех его подклассов. Разработана с учетом производительности и возможностей настройки.
Особенности:
• Pull-to-refresh — плавный жест «потянуть вниз» для обновления контента
• Загрузка дополнительных элементов — бесконечная прокрутка с автоматическим определением загрузки дополнительных элементов
• Высокая степень кастомизации — легко реализовать пользовательские анимации и стили
• Оптимизация производительности — минимальное потребление памяти и плавные анимации
• Простая интеграция — простой API с разумными значениями по умолчанию
• Универсальная поддержка — работает с UIScrollView, UITableView, UICollectionView и UITextView
Refreshable на GitHub: https://github.com/hoangtaiki/Refreshable
Платформа: iOS
⭐️: 41
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
📺 Видео и подкасты за неделю
•
(iOS Ru) Как устроена мобильная разработка в Яндекс Картах
• (iOS En) New iOS 26 Style OnBoarding Animation Using SwiftUI
• (iOS En) Sharing App Data with Uniform Type Identifiers and ShareSheets
• (iOS En) Liquid Glass Morphing Tab bar | Expandable Tab Bar | SwiftUI
• (And Ru) КодРевью лидера мнений: как можно нарушить сразу все принципы разработки
• (And Ru) Ты не владелец своего Android. И вот почему
• (And En) What’s so great about R8?
• (And En) Top 5 Jetpack Compose Performance Killers
• (And En) Kotlin Devs Diversify: Android is 25% Now
• (And En) You won't believe how we created an Android Lint rule using AI - with Tor Norbye
• (And En) Google’s Recommended App Architecture Explained (Android & iOS)
• (Crs Ru) Твое первое приложение на KMP для ОС Аврора
• (Dev Ru) 1 из 10 разработчиков ничего не делает на работе. Интервью с исследователем из Стэнфорда.
• (Dev Ru) Хэш-таблицы — Open addressing, коллизии, hash
Прошлогодние видео:
• (And Ru) Погружаемся в мир технологий Яндекс Переводчика
• (And Ru) Мок собеседование Android разработчика в Контур: архитектура и кодинг приложения
• (Dev Ru) Публичное собеседование на позицию Head of QA
• (Dev Ru) Краш-курс по автоматизации тестирования
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьCarPlay Developer Guide
Официальное руководство по разработке приложений для CarPlay.
Ссылка: https://developer.apple.com/download/files/CarPlay-Developer-Guide.pdf
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Detekt Rules Koin - Detekt-расширение с 51 правилом для Koin 4.x
Кирилл из AndroidBroadcast выпустил новые правила для линтера.
Если используете Koin и Detekt, то знаете, что стандартный Detekt ничего не знает о специфике Koin. Можно написать рабочий, но проблемный код — и никаких предупреждений.
Что ловит библиотека:
• Service Locator антипаттерны (5 правил)
• Ошибки в Module DSL (14 правил)
• Проблемы управления скоупами (8 правил)
• Platform-специфичные проблемы (8 правил)
• Архитектурные нарушения (4 правила)
• Koin Annotations (12 правил)
Detekt Rules Koin на GitHub: https://github.com/androidbroadcast/Koin-Detekt
Платформа: Android
⭐️: 1
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Available now! Telegram Research 2025 — the year's key insights 
