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

Большинство беговых приложений показывают среднюю частоту пульса. «Молодец, пульс был 148 ударов в минуту». Отлично. Но где во время пробежки у вас начались проблемы? Где ваше тело было перегружено?

Вот о чём этот пост: как превратить плоскую статистику в полноцветное повествование. Мы создаём тепловую карту на базе MapKit, используя данные пульса HealthKit, и синхронизируем их с вашим GPS-маршрутом, чтобы точно показать, где вы отдыхали (синий), а где были на грани потери сознания (красным).

Статья: https://apptractor.ru/info/articles/sozdanie-teplovoy-karty-pulsa-na-marshrute-s-pomoschyu-swiftui-healthkit.html
Платформа: iOS
1
TAO Bubbles: элегантные и настраиваемые подсказки для ваших Jetpack Compose приложений

Каждый Android-разработчик сталкивается с задачей обучения пользователей новым функциям или помощи в навигации по интерфейсу. Традиционные всплывающие окна или сообщения могут быть навязчивыми. Конечно же есть способ элегантно подсвечивать элементы UI и предоставлять контекстную помощь. Встречайте TAO Bubbles – легковесную библиотеку для Jetpack Compose, созданную для отображения настраиваемых "пузырей", "подсказок" или "тултипов", которые могут указывать на конкретные UI-компоненты.TAO Bubbles прекрасно подходит для создания пошаговых руководств, демонстрации новых возможностей или предоставления контекстно-зависимой справки прямо в вашем приложении.

Статья: https://habr.com/ru/articles/936122/
Платформа: Android
SwiftyRemoteConfig - простая работа с Firebase Remote Config

SwiftyRemoteConfig делает Firebase Remote Config приятным в использовании, сочетая выразительный API Swift с преимуществами статической типизации. 

SwiftyRemoteConfig на GitHub: https://github.com/fumito-ito/SwiftyRemoteConfig
Платформа: iOS
⭐️: 17
Взлом приложения Tea: разбираем нелепый исходный код

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

Статья: https://apptractor.ru/info/articles/vzlom-tea.html
Платформа: Android/безопасность
👍1👎1
Что нового в UIKit

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

Самое интересное:

• Liquid Glass — теперь UIKit даёт больше инструментов для создания “стеклянных” и прозрачных интерфейсов с помощью UIGlassEffect, настройкой интерактивности, собственного цвета и новых кнопочных конфигураций.
• Работа с цветом: HDR-цвета, новые инициализаторы, свойство linearExposure и даже добавленные слайдеры HDR Boost в цветовых пикерах.
• Новые возможности для UIButton: добавлены стеклянные конфигурации, появилась удобная настройка переходов для символов (UISymbolContentTransition).
• Углы и формы: UICornerConfiguration и UICornerRadius позволяют настраивать радиусы каждого угла, делать капсулы и даже адаптировать углы к форме экрана.
• Кнопки в панелях: теперь есть группировка, бэйджи, опция делить фон между кнопками или скрывать Liquid Glass на отдельных кнопках, новый стиль prominent, и поддержка Writing Tools в системных кнопках.
• Контекстные и главные меню: UIKit теперь умеет собирать меню из элементов по фокусу, а новый UIMainMenuSystem позволяет гибко управлять главным меню на iPad — удалять группы, подменять элементы или настраивать стиль Find и Replace прямо через конфиги.
• Обработка скролла: UIScrollEdgeEffect и UIScrollEdgeElementContainerInteraction дают доступ к новым визуальным эффектам на краях скроллов, которые раньше были доступны только системным навбарам и тулбарам.
• Работа с навигацией: Большое обновление UINavigationBarAppearance (появились subtitleTextAttributes и largeSubtitleTextAttributes), интерактивное возвращение с любого края экрана и новые свойства для мелких деталей.

Меньшие, но приятные нововведения:

• Deprecation методов UIApplicationDelegate в пользу UISceneDelegate и UIWindowSceneDelegate.
• Новый API для UIDocumentBrowserAction, добавлена настройка показа изображения только для контекстного меню vs. навбара.
• Новые возможности для UIScrollView: Look to Scroll (прокрутка взглядом в visionOS), новые параметры edgeEffect.
• Изменения в UIModalPresentationStyle (formSheet теперь и на tvOS).
• Табличные и групповые элементы меню с поведением Repeat (повторяемые действия для горячих клавиш).
• Новые возможности создания сцен для Assistive Access.

Этот UIKit — шаг в сторону большего визуального богатства, глубокой кастомизации и гибкости не только для iOS, но и для iPad, tvOS, visionOS. Если вы ещё не пробовали стеклянные эффекты, настраиваемые углы, или не обновили свои панели навигации — самое время открыть Xcode и поэкспериментировать!

Статья: https://sebvidal.com/blog/whats-new-in-uikit-26/
Платформа: iOS
Jetpack Compose 1.9: главное из свежего релиза

В августе 2025 у Jetpack Compose вышло обновление 1.9 — и это достойный апдейт для всех, кто разрабатывает UI на Android! Кратко делюсь основными новшествами и фишками, которые теперь доступны разработчикам.

Основные обновления:

• Модификаторы dropShadow и innerShadow
Теперь можно просто добавлять красивые тени к любым компонентам. dropShadow() рисует тень позади элемента, а innerShadow() — “впадину” внутри формы. Настраивается радиус, цвет, прозрачность и spread, что даёт простор для экспериментов со сложным визуальным слоем.

• 2D scroll и Scrollable2D
Наконец-то поддерживается двухмерная прокрутка — идеально для реализации таблиц, масштабируемых изображений или любых интерактивных областей, которые нужно перемещать по осям X и Y одновременно. Nested scroll тоже поддерживается!

• Новые методы для контроля видимости
Появились onVisibilityChanged и onFirstVisible: теперь можно запускать действия, когда элементы появляются на экране (например, автоматически включать видео или логировать показы). Можно задавать минимальную долю видимости или время до срабатывания.

• Расширенные текстовые трансформации
В BasicTextField теперь можно применять стили к тексту прямо в трансформации вывода — например, выделять цветом отдельные символы (полезно для форматирования телефонов, банковских карт и пр.).

• Lazy Layout и scroll performance
Все блоки LazyLayout стали стабильными, а прокрутка и префетчинг (LazyLayoutCacheWindow) заметно ускорены — теперь сами списки и grid работают быстрее, с возможностью кастомизации предзагрузки элементов.

Важные улучшения для разработчиков:

• Более информативные stack traces
Новая экспериментальная API делает локацию крэша понятной — увидите не только свой код, но и имена composable-компонентов прямо в трассировке (включать стоит только для debug).

• Новая библиотека аннотаций
@Stable, @Immutable и @StableMarker теперь доступны как runtime-аннотации — удобно, когда хочется использовать эти метки без зависимости от Compose runtime.

Jetpack Compose продолжает быстро эволюционировать: новые визуальные эффекты, гибкая кастомизация, ускорение списка, расширенные возможности для адаптивных UI — всё это уже в стабильной версии. Оцените dropShadow, поиграйте с двухмерным скроллом или попробуйте новые возможности форматирования текста — впечатления точно будут!

Статья: https://android-developers.googleblog.com/2025/08/whats-new-in-jetpack-compose-august-25-release.html
Платформа: Android
XCalendar - клон Google Calendar на Compose Multiplatform

XCalendar - современное кроссплатформенное приложение-календарь, созданное с использованием Kotlin Multiplatform и Compose Multiplatform, с поддержкой нескольких представлений календаря (день, неделя, месяц и т.п.), управлением событиями и интеграцией праздников.

Архитектура: Compose Multiplatform (Jetpack Compose), Kotlin Multiplatform, Room Database с SQLite, Koin, Ktor, Kotlin Flow + StateFlow, Compose Navigation, Gradle с Kotlin DSL.

XCalendar на GitHub: https://github.com/Debanshu777/XCalendar
Платформа: Android
⭐️: 35
📺 Видео и подкасты за неделю на @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