AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.13K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
От стороннего платёжного решения к собственному 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
Кастомная сериализация с помощью kotlinx.serialization

Сегодня расскажу о JSON Schema и как мы используем эту спецификацию на проекте, а также о библиотеке kotlinx.serialization и том, как она упростила нам работу со схемами. Статья будет полезна разработчикам, которые интересуются библиотекой kotlinx.serialization и хотят глубже узнать её устройство.

Статья: https://habr.com/ru/companies/okko/articles/961848/
Платформа: Android
👍1😁1
Руководство по промпт-инжинирингу для программистов

В статье автор рассказывает, как превратить инструменты на основе ИИ для программирования (автодополнение, ассистенты, генерация кода) в действительно полезных партнёров по разработке — если грамотно составлять запросы (промпты). Он подчёркивает: качество ответа ИИ сильно зависит от того, какой запрос мы ему задаём — контекст, цель, детали имеют решающее значение.

📌 Ключевые принципы, которые стоит взять на заметку

Вот некоторые из наиболее важных рекомендаций из статьи:

• Предоставляйте богатый контекст: язык, фреймворк, используемые библиотеки, специфика проекта.
• Чётко сформулируйте цель или вопрос: вместо «почему не работает» задайте: «эта функция возвращает undefined вместо ожидаемого результата X при входе Y».
• Разделяйте сложные задачи на части: не просите сразу реализовать весь большой модуль, начните с генерации скелета, затем добавьте шаг за шагом.
• Приводите пример входа/выхода, желаемого поведения — это помогает ИИ „понять“ задачу.
• Используйте роли или персону: «действуй как старший разработчик React» или «ты эксперт по безопасности кода». Это формирует нужный тон и глубину ответа.
• Итерации: рассмотрите первый ответ, корректируйте запрос, задавайте уточняющие вопросы. Работа с ИИ — не одноразовый промпт, а диалог.

Применение этих принципов может серьёзно повысить вашу эффективность. Впрочем, в статье упоминается, что промпт-инженерия это скорее ремесло, чем строгий набор правил.

Статья: https://addyo.substack.com/p/the-prompt-engineering-playbook-for
Платформа: разработка
4👍1
Tachikoma - современный SDK для работы с ИИ-провайдерами

Tachikoma - современный Swift AI SDK, который делает интеграцию с ИИ простой и естественной. Tachikoma предоставляет интеллектуальный, адаптивный интерфейс для ИИ-сервисов с полностью современным API на Swift.

Tachikoma на GitHub: https://github.com/steipete/Tachikoma
Платформа: iOS
⭐️: 135
🔥2
Пишем свою мобильную ОС с нуля на Rust

Сегодня я хотел бы поделиться с вами результатами своего эксперимента по написанию ядра мобильной ОС с нуля.

Для чего? Главным образом — просто ради развлечения. Мне попадалось много статей по разработке десктопных ОС для x86. Да и сам я когда-то этим увлекался. Попытка разобраться с мобильной операционкой может стать довольно интересным опытом.

Статья: https://habr.com/ru/articles/962680/
Платформа: разработка
3
Сделайте приложение более персонализированным с помощью Language Discovery

Новый Locale.preferredLocales API представляет собой не просто постепенное улучшение, а полное переосмысление того, как iOS работает с многоязычными пользователями.

В то время как старый API был основан на строках и требовал обширной ручной обработки, вынуждая разработчиков поддерживать жёстко заданные соответствия для культурных особенностей, новый API предоставляет всё необходимое для приложений, учитывающих культурные особенности (identifier, displayName, languageCode и т.д.).

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

Статья: https://apptractor.ru/info/articles/language-discovery.html
Платформа: iOS
👍1
Страна, которая сломала Kotlin

Статья посвящена одной из самых удивительных и трудноуловимых ошибок языка Kotlin. В 2016 году турецкий инженер заметил, что его сборка не проходит: компилятор выдаёт загадочную ошибку «Unknown compiler message tag: INFO». При этом причина оказалась не в коде, а в… настройки локали! Оказалось, что на турецкой локали метод строкового преобразования toLowerCase() превращает «INFO» в «ınfo» (с безточечной «i») — и словарь мапы не находит соответствия.

Дальше — ещё интереснее: спустя годы, с выходом корутин в Kotlin 1.3, ошибка проявилась снова при вызове функции boxInt() — но машиной она была сгенерирована как boxİnt() (заглавная «İ») на машинах с турецкой локалью.

И всё благодаря тому же проблемному capitalize() без указания локали. В финале автор показывает, как разработчики Kotlin заменили все такие вызовы на версии с явно заданной локалью (Locale.US или аналог) и отключили использование старых функций toLowerCase()/toUpperCase().

Основная мысль: даже языковые конструкции вроде преобразования регистра строк, считавшиеся банальными, могут таить в себе серьёзные баги в глобальной среде. Это напоминание: при разработке — не игнорируйте культурно-языковые аспекты и локали. И да — турецкая локаль почти сломала Kotlin.

Статья: https://sam-cooper.medium.com/the-country-that-broke-kotlin-84bdd0afb237
Платформа: Android/Kotlin
👍2