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

Когда мы начинали, мы думали, что модернизируемся. На самом деле мы просто исправляли свои прошлые ошибки.

Сделали бы мы это снова? Вероятно, но медленнее и умнее.

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

Переписывание кода романтично, пока вы сами не столкнётесь с ним.

И если вы когда-нибудь поймаете себя на мысли «Давайте просто всё перепишем на Swift» - сделайте глубокий вдох. Распланируйте лучше. И всё равно действуйте.

Потому что, хотя это чуть не убило нас, в итоге оно сделало нас лучшими разработчиками.

Статья: https://apptractor.ru/info/articles/40-000-objective-c.html
Платформа: iOS
👍2
Hivefy - музыкальный плеер в стиле Spotify на Flutter

Hivefy — это открытое музыкальное Offline-First приложение без рекламы, вдохновленное Spotify. Создано на Flutter с использованием неофициального JioSaavn API.

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

Hivefy на GitHub: https://github.com/Harish-Srinivas-07/hivefy
Платформа: кроссплатформа
⭐️: 34
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
AppleLoginAnimation - анимация как в логине Apple iCloud

Это воссоздание анимации, которую вы видите на экране входа в iCloud, с использованием SwiftUI и SpriteKit.

AppleLoginAnimation на GitHub: https://github.com/georgecartridge/AppleLoginAnimation
Объяснение в X: https://x.com/georgecartridge/status/1982483221318357253
Платформа: iOS
⭐️: 59
👍2
Jetliner XR

Автор статьи подробно рассказывает о проекте Jetliner XR — демонстрации пространственных (spatial) возможностей на платформе Android XR. С помощью 3D-модели самолёта (jetliner) демонстратор показывает, как можно создавать приложения с допол­ненной и смешанной реальностью, используя инструменты из набора Jetpack XR. Статья служит практическим путеводителем для разработчиков: она объясняет ключевые шаги, особенности архитектуры и возможные сложности при работе в пространственной среде. Jetliner XR — не просто демонстрация, а стартовая точка для экспериментов и прототипов.

Статья: https://charlesmuchene.com/jetliner-xr
Платформа: Android
👍1
Устранение задержек в Composable: 3 практических метода для создания плавного UI

Редко возникает необходимость выполнять сложные задачи непосредственно в пользовательском интерфейсе, и большая часть обработки будет выполняться в ViewModel.

Однако, если у вас много работы или вам не хватает опыта с Compose, вам может потребоваться выполнять значительный объём кода внутри Composable-объектов для отображения состояния в пользовательском интерфейсе.

Надеюсь, когда придёт время, вы вспомните представленные здесь решения и сочтёте их полезными.

Статья: https://apptractor.ru/info/articles/ustranenie-zaderzhek-v-composable-3-prakticheskih-metoda-dlya-sozdaniya-plavnogo-ui.html
Платформа: Android
Eblan Launcher - быстрый настраиваемый и безопасный лаунчер для Android

Большинство лаунчеров для Android — это всего лишь форки Launcher3 от AOSP. Они часто забрасываются из-за своей сложности, что затрудняет участие новичков. Плюс многие из них до сих пор написаны на Java и используют устаревшие API. Автор этого проекта хотел попробовать что-то другое — разработать лаунчер для Android с нуля, приветствуя новых разработчиков и применяя надёжные принципы программирования и лучшие практики, чтобы проект оставался живым в долгосрочной перспективе. Его цель — дать всем возможность пользоваться мощными функциями, не жертвуя при этом конфиденциальностью.

Eblan Launcher на GitHub: https://github.com/JackEblan/EblanLauncher
Платформа: Android
⭐️: 158
😁13
От стороннего платёжного решения к собственному SDK: история RuStore Pay SDK

Опыт показал: чтобы развиваться, важно брать контроль в свои руки. Создание своего SDK потребовало много сил, но дало главное — гибкость, скорость и предсказуемость.

Сегодня Pay SDK стабильно работает в сотнях приложений, помогает разработчикам зарабатывать и даёт пользователям удобный и понятный сценарий оплаты. Мы не останавливаемся: впереди новые методы оплаты, дополнительные инструменты монетизации и улучшения по запросам сообщества.

Статья: https://habr.com/ru/companies/vk/articles/959520/
Платформа: Android
💩1
This media is not supported in your browser
VIEW IN TELEGRAM
Плавная анимация в Jetpack Compose — простое решение с animateDpAsState

Благодаря Jetpack Compose логика анимации легко встраивается в декларацию пользовательского интерфейса.

Всего несколько строк кода — и вы можете создавать плавные, адаптивные переходы, которые придадут вашему приложению премиальный и продуманный вид.

Экспериментируем с animateDpAsState — одним из удобных API Compose, который делает переходы пользовательского интерфейса невероятно плавными.

Цель была проста: анимировать вертикальное смещение кнопки в зависимости от положения нижнего экрана.

Сниппет:

val targetY by animateDpAsState(
targetValue = when (sheetState.currentValue) {
SheetValue.Hidden -> 0.dp
else -> {
val currentOffset = with(density) {
try { sheetState.requireOffset().toDp() }
catch (_: Exception) { 0.dp }
}

(usableHeight - currentOffset)
.coerceAtLeast(0.dp)
.coerceAtMost(maxLift)
}
},
label = "gps_button_animation"
)

Box(
modifier = Modifier
.offset(y = -targetY) // Negative offset moves the button up
) {
// Button content here
}


Платформа: Android
Текстовые эффекты с использованием TextRenderer в SwiftUI

Статья раскрывает пользу TextRenderer в SwiftUI — мощный API, который открывает полный контроль над визуальным отображением текста. Вместо стандартных модификаторов, вы можете рисовать текст «с нуля», применяя эффекты на уровне строки или отдельного глифа. В статье показаны примеры: постепенное затухание текста, пульсация строк с анимацией, эффект «скачущих» букв и применение фильтров, таких как размытие. Если хотите вывести UI-текст на новый уровень — читайте обязательно.

Статья: https://www.createwithswift.com/text-effects-using-textrenderer-in-swiftui/
Платформа: iOS
Анализ производительности для ускорения сборки в Xcode 2025

Изучив производительность сборки и потратив время на её улучшение там, где это возможно, вы увидите, что можете добиться прогресса несколькими небольшими шагами.

Статья: https://apptractor.ru/info/articles/analiz-proizvoditelnosti-dlya-uskoreniya-sborki-v-xcode-2025.html
Платформа: iOS
Cahier - пример современного блокнота для Android от Google

Cahier ("блокнот" на французском) — это многофункциональное offline-first приложение для ведения заметок, и призванное продемонстрировать лучшие практики современной разработки Android с использованием Kotlin, Jetpack Compose, Material 3 и набора библиотек Jetpack, таких как Ink API. Оно служит референсным примером Google для создания надежных, адаптивных и увлекательных приложений для повышения производительности на Android.

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

Ключевые фичи:

• Универсальное создание заметок: демонстрирует, как реализовать гибкую систему создания контента, поддерживающую различные форматы в одной заметке, включая текст, рисунки свободной формы и прикреплённые изображения.
• Инструменты для креативного рисования: реализует высокопроизводительный процесс рисования с малой задержкой с помощью Ink API. В примере представлен практический пример интеграции различных кистей, палитры цветов, функций отмены/повтора действий и ластика.
• Интеграция гибкого контента с перетаскиванием: демонстрирует, как обрабатывать входящий и исходящий контент с помощью перетаскивания. Это включает в себя прием изображений из других приложений и возможность перетаскивания контента из вашего приложения для удобного обмена.
• Организация заметок: добавляйте заметки в избранное для быстрого доступа. Фильтруйте представление для поддержания порядка.
• Offline first архитектура: приложение построено на Offline first архитектуре с использованием Room, что гарантирует локальное сохранение всех данных и полную функциональность приложения без подключения к Интернету.
• Мощная поддержка многооконности и многоэкземплярности: демонстрирует, как поддерживать многоэкземплярность, позволяя запускать приложение в нескольких окнах, чтобы пользователи могли работать с разными заметками одновременно, повышая производительность и творческий потенциал на больших экранах.
• Адаптивный пользовательский интерфейс для всех экранов: Пользовательский интерфейс легко адаптируется к различным размерам и ориентациям экрана с помощью ListDetailPaneScaffold и NavigationSuiteScaffold, обеспечивая оптимизированный пользовательский интерфейс на телефонах, планшетах и ​​складных устройствах.
• Глубокая системная интеграция: проект предоставляет руководство по тому, как сделать ваше приложение приложением по умолчанию для создания заметок на Android 14 и более поздних версиях, реагируя на общесистемные намерения Notes, что позволяет быстро захватывать контент из различных системных точек входа.

Cahier на GitHub: https://github.com/android/cahier
Статья: https://android-developers.googleblog.com/2025/10/introducing-cahier-new-android-github.html
Платформа: Android
⭐️: 38
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
SwiftUI Onboarding - онбординг, как в приложениях Apple

SwiftUI Onboarding — это библиотека SwiftUI, которая реализует процесс онбординга, аналогичный приложениям Apple.

Фичи:

• Совместимость со Swift 6.0 — разработано в соответствии с новейшими стандартами Swift
• Поддержка нескольких языков — 10 языков доступны по умолчанию
• Доступность прежде всего — полная поддержка Dynamic Type и функций доступности
• Широкие возможности настройки — гибкие возможности конфигурации
• Кроссплатформенность — поддержка iOS и macOS
• Современный SwiftUI — использует новейшие API и шаблоны SwiftUI
• Автоматическое управление состоянием — встроенная интеграция с AppStorage
• Светлый и тёмный режимы — полностью поддерживают как светлый, так и тёмный режимы

SwiftUI Onboarding на GitHub: https://github.com/Sedlacek-Solutions/SwiftUI-Onboarding
Платформа: iOS
⭐️: 302
👍2
KMP Starter - шаблон кроссплатформенного приложения на KMP

KMP Starter - современный, готовый к использованию шаблон приложения на Kotlin Multiplatform с дизайном Material 3, утилитами и чистой архитектурой.

Технический стек: Kotlin Multiplatform для кроссплатформенной разработки, Compose Multiplatform для UI, Material 3 как дизайн-система, Koin для инъекции зависимостей, Room в качестве локальной базы данных, DataStore для хранения настроек, корутины и Flow для асинхронного программирования, RevenueCat для покупок, MixPanel для аналитики, Kotlinx Serialization для сериализации JSON.

KMP Starter на GitHub: https://github.com/DevAtrii/Kmp-Starter-Template
Платформа: Android/кроссплатформа
⭐️: 51
👍1
📺 Видео и подкасты за неделю @AppFiles

(iOS En) Optimize your app's speed and efficiency
(iOS En) Modern SwiftUI Callbacks using AsyncStream
(iOS En) How hard can it be to send a postcard?
(iOS En) Beyond Xcode
(iOS En) Building Complex Scroll Animations - Custom Bottom Sheet Interaction
(iOS En) Keychain Unlocked: Mastering Advanced Security for Smarter, Safer Apps
(iOS En) SwiftUI Alert With Progress View
(iOS En) iMessage Style Photo Picker Using SwiftUI
(And Ru) ART Memory Management
(And Ru) Kotlin и контекстно-ориентированное мышление
(And Ru) VK Звонки в лесу: звоним в плохих сетях
(And En) TheAndroidShow: live from Droidcon, with Agents in Android Studio, Android XR and more!
(And En) Google Play Console: Streamlining workflows, from testing to growth
(And En) Building for Samsung Galaxy XR, featuring Calm's blueprint to Android XR development
(And En) Android XR #AskAndroid
(And En) Explaining Google's Guide to App Architecture In Simple Terms
(And En) FAB Menu In Material3 Expressive
(And En) From Java to Kotlin: Mercedes-Benz.io’s Journey
(And En) Merge Queue at Uber Scale
(And En) From 25 Minutes to 2.5: Okta's Journey to Faster Builds
(Crs Ru) Что не так с Dart и Flutter в 2025 году?
(Crs Ru) KMP для ОС Аврора
(Crs Ru) Backend-Driven UI как ответ на рост числа платформ
(Dev Ru) Как устроена мобильная разработка сегодня
(Dev Ru) Как вас взламывают через Open Source — DevSecOps и безопасная разработка

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

(iOS Ru) Как устроена библиотека AppMetrica
(iOS Ru) Здесь куют Metal
(iOS Ru) Как iOS-разработчику выжить на проекте с KMP?
(And Ru) Android cookbook: готовим WebView правильно
(And Ru) Kotlin Coroutines. Устройство и возможности использования
(And Ru) Фреш на полке, фреш в стеке
(Dev Ru) От натива до SDUI через гибрид
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Маленькая RAM vs новые фичи: как мы повышаем детализацию Карт и сохраняем стабильность

Чем богаче визуальное и информационное наполнение, тем выше требования к устройствам, на которых работает приложение. Улучшая пользовательский опыт с помощью новых технологий и более детальной картографии, мы сталкиваемся с постоянным ростом потребления ресурсов — прежде всего оперативной памяти (RAM). Наша задача — находить баланс между развитием продукта и сохранением его стабильной и быстрой работы на разных устройствах, включая самые бюджетные модели.

Статья: https://habr.com/ru/companies/yandex/articles/961204/
Платформа: разработка
1
Быстрее, чище, стабильнее: как мы ускорили UI-тесты в iOS в 2,5 раза

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

Статья: https://habr.com/ru/companies/vk/articles/961616/
Платформа: iOS
👍1
Самый задаваемый вопрос на iOS-собеседовании, на котором застревают даже Senior разработчики

Он не про синтаксис Swift. Не про UIKit или SwiftUI. Он про то, насколько хорошо вы разбираетесь в iOS.

Статья: https://apptractor.ru/info/articles/samyy-zadavaemyy-vopros-ios.html
Платформа: iOS
👍3
Gradle для QA-инженера

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

Статья: https://habr.com/ru/articles/959912/
Платформа: Android
👍1
StoreKit Helper - обертка StoreKit2 для SwiftUI

StoreKit Helper - ещё одна легковесная обертка StoreKit2, созданная специально для SwiftUI, и упрощающая реализацию встроенных покупок.

StoreKit Helper на GitHub: https://github.com/jaywcjlove/StoreKitHelper
Платформа: iOS
⭐️: 130
This media is not supported in your browser
VIEW IN TELEGRAM
Nice Toast - красивые и настраиваемые тосты для Android

Nice Toast — это потрясающая и легко настраиваемая библиотека для создания уведомлений, доступная как для традиционных View, так и для Jetpack Compose. Повысьте удобство использования своего приложения, заменив стандартные тосты привлекательными, анимированными и информативными уведомлениями, которые отлично смотрятся как в светлой, так и в тёмной темах оформления.

Нужно ли вам отображать сообщение об успешном завершении процесса, ошибку, предупреждение или просто какую-то информацию, NiceToast предлагает разнообразные стили, соответствующие дизайну вашего приложения.

Nice Toast на GitHub: https://github.com/dononcharles/NiceToast
Платформа: Android
⭐️: 9
👍1
Публикация PWA в App Store и Play Store на github actions

Понадобилось мне как-то раз сделать из PWA мобильные приложения. Приключение на 20 минут, зашли и вышли - подумал я и пропал на пару месяцев. В статье будет гремучая смесь из Java, C#, NodeJS, Swift, bash, Dockerfile и github actions. Но в результате возможность непрерывно поставлять свежие сборки в магазины приложений.

Статья: https://habr.com/ru/articles/855830/
Платформа: разработка
👍1