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

(iOS Ru) Расширяем iOS-разработку с помощью AI
(iOS En) New Toolbar APIs in iOS 26
(iOS En) SwiftUI Circular Wheel Picker (This is ScrollView!) - Custom Picker
(iOS En) User OnBoarding Tutorial Animations Using SwiftUI
(And Ru) Жертва IT-школы, или как вас не научат ничему за большие деньги
(And En) Advanced shared elements with shape morphing
(And En) Autofill in Compose
(And En) Models & Mappers With Presentation/Domain/Data - In-Depth Guide
(And En) 47 Refactorings in 45 minutes
(And En) Building immersive VR apps for Meta Quest with Jetpack Compose 
(And En) Context-sensitive resolution
(And En) The story of Gradle
(Crs Ru) Будущее Flutter, тушение пожаров и Flutter Dev Podcast
(Crs En) One Codebase, Three Platforms: X's Experience with Kotlin Multiplatform
(Crs En) Flutter framework code review: BuildContext & Element
(Dev Ru) Разработка на iOS и KMP, и жизнь на полной скорости
(Dev Ru) Как цифровая доступность улучшит ваш продукт и, возможно, вас
(Dev Ru) Что хочет CPO: как выжить разработчику в продуктовой команде
(Dev Ru) Можно ли доверять AI?
(Dev En) Kickstarting AI Agent Development in Kotlin With Koog
(Dev En) DevSecOps Course for Beginners – API Security
(Mrk Ru) ASO прила летит в космос. Х22 за месяц. От 0 до 3000$ MRR

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

(And Ru) ByteWeaver. Инструментирование байт-кода во имя великого блага
(Crs Ru) Почему вам не нужен Kotlin Multiplatform
(Crs Ru) Создание indoor-карты здания во Flutter
(Dev Ru) 30 вопросов команде и себе — техника и практика формулировка хороших вопросов
(Dev Ru) Как пользоваться DivKit
Please open Telegram to view this post
VIEW IN TELEGRAM
Заменит ли WSA эмулятор Android Studio?

Встроенный в Android Studio эмулятор позволяет создавать resizable эмулятор. Но пользоваться им мне показалось не очень удобным. Кроме того, если вы страдаете от нехватки ОЗУ, пользоваться встроенным эмулятором становиться трудно. В моём случае имеем машину с 8 Гб оперативной памяти на борту, и работа эмулятора сопровождается постоянными фризами и зависаниями.

Однако недавно я нашёл решение — Windows Subsystem For Android (WSA). И несмотря на то, что поддержка проекта совсем скоро прекращается, всё работает довольно стабильно.

Статья: https://habr.com/ru/articles/937310/
Платформа: Android
Quick RSS - приложение для чтения RSS

Quick RSS — это простая в использовании, конфиденциальная и интуитивно понятное приложение для чтения RSS-лент.

Quick RSS на GitHub: https://github.com/jaywcjlove/quick-rss
Платформа: iOS
⭐️: 242
Все, что я знаю о хорошем системном дизайне

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

• Минимизируйте количество компонентов, особенно хранение состояния.
• Один сервис пишет в базу, остальные работают через API или события.
• Читайте с реплик, пишите — на мастер; индексация и грамотные запросы — ключ к скорости.
• Долгие операции — в фоновую очередь, быстрые — прямо пользователю.
• Кэшируйте только то, что невозможно оптимизировать другими способами.
• Не злоупотребляйте событиями — проще API-запрос.
• Фокус на “горячих путях” — самые критичные точки.
• Логи и метрики нужны всегда, особенно для ошибок и редких случаев.
• Учитывайте сбои: идемпотентность, ретраи, правильное поведение при падении.

Главное — стабильность и предсказуемость, а не “эффектные” архитектурные решения.

Статья: https://www.seangoedecke.com/good-system-design/
Платформа: разработка
WordMasterKMP - клон Wordle на KMP

WordMasterKMP - приложение на Kotlin Multiplatform, вдохновлённое игрой Wordle, а также примерами Word Master и Wordle-solver. Основная логика/состояние игры включены в общий код KMP, а поверх этого реализованы клиенты для iOS (SwiftUI), Android (Jetpack Compose) и десктопов (Compose for Desktop).

WordMasterKMP на GitHub: https://github.com/joreilly/WordMasterKMP
Платформа: Android/кроссплатформа
⭐️: 78
👍1
Интеграционное тестирование на Android: практическое руководство с Hilt, Compose и Room

В статье рассказывается о важности интеграционного тестирования для Android-приложений, которое часто недооценивают в пользу юнит-тестов. Автор приводит пример собственного проекта DogBreed App, чтобы показать, как интеграционные тесты позволяют убедиться, что вся архитектура приложения — экраны, ViewModel, репозитории и источники данных — корректно взаимодействуют между собой. Особое внимание уделяется способу реализации: приложение построено на Kotlin, Jetpack Compose и Hilt, с чистой архитектурой и делением на три слоя (UI, доменный и слой данных). Для интеграционного теста используются фейковые реализации сервисов и вспомогательная, база данных в памяти Room, что позволяет менять стандартные зависимости на тестовые внутрь DI-фреймворка — в примере через Hilt и аннотацию @TestInstallIn.

Статья: https://proandroiddev.com/integration-testing-on-android-a-practical-guide-with-hilt-compose-room-73d49e243001
Платформа: Android
1👍1
Реализация продвинутого преобразования речи в текст в вашем приложении SwiftUI

Apple недавно внедрила функцию преобразования речи в текст во многие свои приложения, включая «Заметки» и «Диктофон», что отражает более широкий переход к голосовому вводу как основному методу. В связи с этим Apple выпустила новый SpeechAnalyzer API, использующий более быструю и эффективную модель, специально настроенную для обработки длинных аудиозаписей и речи отдаленных говорящих.

К концу этого руководства вы научитесь получать доступ к аудиобуферу микрофона, а затем предоставлять его новому классу SpeechAnalyzer для обработки и преобразования в текст.

Статья: https://www.createwithswift.com/implementing-advanced-speech-to-text-in-your-swiftui-app/
Платформа: iOS
👍1
SwiftUI в 2025: забудьте MVVM

На дворе 2025 год, а мне всё ещё задают один и тот же вопрос: «Где ваши ViewModel?» Каждый раз, когда я делюсь своим мнением или кодом своих открытых проектов, таких как клиент BlueSky IcySky или даже приложение Medium для iOS, разработчики удивляются, видя чистые, простые представления без единой ViewModel.

Позвольте мне прояснить: вам не нужны ViewModel в SwiftUI.

Никогда не были нужны.

И никогда не будут нужны.

Статья: https://apptractor.ru/info/articles/swiftui-v-2025-zabudte-mvvm.html
Платформа: iOS
👍4👎3🖕1
FileSystem - пакет Swift для взаимодействия с файловой системой

FileSystem - это пакет Swift, предоставляющий простой кроссплатформенный API для взаимодействия с файловой системой.

Зачем создавать новый пакет Swift для взаимодействия с файловой системой, если уже есть FileManager? Вот причины:

• Обеспечение понятных пользователю сообщений об ошибках, которые можно выводить на экран.
• Интеграция с swift-log для предоставления возможности журналирования операций с файловой системой.
• Использование структурированного параллелизма Swift с async/await.
• Предоставление API, в котором пути всегда абсолютны, упрощает анализ операций с файловой системой.

FileSystem лежит в основе Tuist — набора инструментов для ускорения разработки качественных приложений.

FileSystem на GitHub: https://github.com/tuist/FileSystem
Платформа: iOS
⭐️: 32
👍1
Как мы готовимся к новым версиям iOS

Меня зовут Антон Долганов, я старший iOS-разработчик в Контуре. Большую часть времени я работаю над инфраструктурными модулями, чтобы наши приложения были быстрыми, стабильными и легко развивались.

Следить за новинками платформы — также важная часть моей работы. Ведь чтобы инфраструктура не тормозила развитие продуктов, нужно заранее понимать, что изменится в iOS, какие риски появятся, и какие возможности можно будет использовать.

Статья: https://habr.com/ru/companies/skbkontur/articles/936570/
Платформа: iOS
👍1
Технический разбор Max: что внутри APK

Сейчас мессенджер Max «очень классно ловит даже на парковке» 🙃 Стало интересно: а что же за технологии стоят за этим чудом? Скачал APK (весит ~114 MB) и полез внутрь.

Статья: https://habr.com/ru/articles/938518/
Платформа: Android
🔥2👎1
Retrofit + корутины Kotlin: полное руководство для Android-разработчиков

Связка Retrofit и корутин Kotlin преобразила сетевое программирование в Android: теперь это не сложная и "ломкая" задача, а элегантное и поддерживаемое решение. Используя подходы и лучшие практики из этого руководства, вы сможете делать надёжные и масштабируемые сетевые слои, улучшающие и опыт разработки, и производительность приложения.

Статья: https://apptractor.ru/develop/retrofit-korutiny-kotlin-polnoe-rukovodstvo-dlya-android-razrabotchikov.html
Платформа: Android
2👎2
Smart Cleaner - клинер для Android

Smart Cleaner for Android помогает освободить место на устройстве и управлять им. Он удаляет ненужные файлы, кэш и другие нежелательные данные с устройства, восстанавливая необходимый объём памяти и производительность.

Smart Cleaner включает в себя множество функций для поддержания чистоты и бесперебойной работы телефона, таких как очистка буфера обмена, менеджер приложений, очистка файлов WhatsApp, оптимизация изображений и многое другое. С Cleaner вы можете легко поддерживать свой телефон в идеальном состоянии, не беспокоясь о сложных настройках или получении root-доступа. Приложение разработано таким образом, чтобы быть простым, удобным, быстрым и лёгким в использовании.

Smart Cleaner на GitHub: https://github.com/MihaiCristianCondrea/Smart-Cleaner-for-Android
Платформа: Android
⭐️: 154
👍1
Акторы в Swift: руководство для начинающих по безопасному параллелизму

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

Статья: https://apptractor.ru/info/articles/actors.html
Платформа: iOS

Еще про акторы:
Погружение в Акторы в Swift 5.5
Акторы в Swift — для чего они нужны?
📺 А так ли нужны акторы в Swift Concurrency?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Можно ли унаследовать один `actor` от другого?
Anonymous Quiz
7%
Да, но только если они final
68%
Нет, акторы не поддерживают наследование
15%
Да, но только через протокол
👍1
Митап RuStore про монетизацию и рекламу

Когда: 27 августа, 17:00 (мск)

О чем: обсудим, как заработать на приложениях - тренды, рекламные форматы 2025 года и возможности RuStore.

Эксперты — ведущие менеджеры продукта:
Артём Фролкин — про рекламу;
Иван Шарков — про in-app платежи и RuStore Pay SDK.

Участвуй: можно задать вопрос команде RuStore и получить быстрый ответ — прямо в эфире. Остальные вопросы разберут в чате.

Регистрируйся, если хочешь получать больше с приложений!
👎3👍2
TSAlertController - элегантная библиотека оповещений

TSAlertController - элегантная библиотека для отображения уведомлений, оповещений и прочих информационных окон. 

Она имитирует интерфейс UIAlertController и ссылается на другие API, чтобы минимизировать кривую обучения. Метод настройки аналогичен [UIButton.Configuration] и [UIBarAppearance], что позволяет разработчикам легко изменять внешний вид и поведение оповещений, используя знакомые API.

TSAlertController на GitHubhttps://github.com/rlarjsdn3/TSAlertController-iOS
Платформа: iOS
⭐️: 4
📺 Видео и подкасты за неделю @AppFiles

(iOS En) Multi-Item Drag & Drop API
(iOS En) Professional SwiftUI Card Component Library
(iOS En) SwiftUI Custom Calendar - Modern Date Picker Component
(iOS En) AI Refactoring Is Faster?!
(iOS En) Setting Up App Icons in Xcode 26 with Icon Composer
(iOS En) Mastering Icon Composer Create Stunning App Icons
(And En) Custom Design Systems In Jetpack Compose - THESE Are My Best Practices
(And En) APIs: How Hard Can They Be?
(And En) Fast inner dev loops for Kotlin Gradle builds
(And En) Nested type aliases in Kotlin 2.2
(And En) You didn't handle the Process Death, did you?
(And En) AI-Powered Android Development chat with Kevin Tang
(Crs Ru) Генерация UI Kit с использованием ИИ
(Crs En) Build Websites in Kotlin & Compose HTML with Kobweb
(Crs En) Multiplatform Settings: A case study in Multiplatform library development
(Crs En) Project Sparkles: How Compose for Desktop is changing Android Studio
(Dev Ru) Надежность мобильных приложений: что это и как достичь
(Dev Ru) Зачем нужен COBOL в 2025
(Mrk En) App Experts Reveal How to Improve Conversions

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

(And Ru) Фантастические баги: как их ловить и править
(Crs Ru) Почему вам стоит учить/использовать Kotlin Multiplatform
(Dev Ru) Задача на логику из собеседования в Amazon (+ все собеседования)
(Psy Ru) Как успевать больше, оставаясь эффективным, и не выгореть
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работает WorkManager в Android

Ты запускаешь процесс в приложении, но ждать результата тебе лень, поэтому ты уходишь в мессенджер, уверенный, что через пять минут процесс закончится сам собой. А он не заканчивается, потому что система убила процесс этого приложения, высвободив ресурсы на другую работу. Как бороться с Android’ом и не позволять ему уничтожать важные фоновые процессы, расскажет Сергей Смирнов, Android-разработчик CleverPumpkin, который так овладел инструментом WorkManager, что смог в фоновом режиме написать эту статью.

Статья: https://apptractor.ru/info/articles/kak-rabotaet-workmanager-v-android.html
Платформа: Android
1
Руководство по оптимизации Jetpack Compose — лучшие практики для ускорения приложений

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

В большом разрешении: https://medium.com/@jetpackcomposedev.channel/jetpack-compose-optimization-guide-best-practices-for-faster-apps-c707fade6081
Платформа: Android