AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.13K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Kyoku - это приложение для потоковой передачи музыки, подобное Spotify или Apple Music. Оно использует протокол HLS для потоковой передачи музыки и в нем есть более 70 тысяч песен. В клиенте Jetpack Compose, WorkManager, Hilt, Media3, OkHttp, Room, Coil, на сервере Ktor, MySQL, JWT и Jedis.

Kyoku на GitHub: https://github.com/POULASTAAdAS/Kyoku
Платформа: Android
⭐️: 10
Воспроизведение и редактирование видео с AVFoundation. Часть 2. Ассеты продвинутые

Перед вами вторая статья из цикла про воспроизведение и редактирование медиа с помощью AVFoundation. В предыдущей статье рассказали, что такое простой ассет. Сегодня разбирают тему сложных ассетов. А ещё знакомят с идеями, которые могут лежать в основе любого видеопроигрывателя или видеоредактора.

Статья: https://habr.com/ru/articles/899304/
Платформа: iOS
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
6 шагов, чтобы сделать Slide to unlock кнопку в Jetpack Compose

Статья предоставляет детальное руководство по созданию интерактивной кнопки с использованием Jetpack Compose, включая кодовые примеры и объяснения каждого шага.

Статья: https://proandroiddev.com/6-steps-to-make-a-slide-to-unlock-button-in-jetpack-compose-ee9398cecf5f
Платформа: Android
👏: 22
1
Дизассемблируем Apple Exclaves

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

​В статье автор делится результатами анализа новой архитектуры безопасности Apple. В ходе исследования он выявил несколько ключевых аспектов и анализ предоставляет ценную информацию о внутреннем устройстве Exclaves, подчеркивая стремление Apple к усилению изоляции и безопасности критически важных компонентов системы.​

Статья: https://randomaugustine.medium.com/disassembling-apple-exclaves-7979bb987f86
Платформа: iOS
👏: 67
👍1
Создание и публикация SDK для Android: простое пошаговое руководство, которое действительно работает

​Разработка и публикация собственного Android SDK может показаться сложной задачей, но благодаря подробному руководству этот процесс становится понятным и доступным. В своей статье автор делится практическими шагами по созданию и распространению SDK. ​

Ключевые этапы, рассмотренные в статье:

1. Настройка проекта и модуля библиотеки:
2. Разработка логики SDK и публичного API:
3. Публикация SDK с использованием GitHub и JitPack:
4. Интеграция SDK в реальное приложение на основе Jetpack Compose:

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

Статья: https://apptractor.ru/android-sdk-step-by-step
Платформа: Android
👏: 131
1
Расширяем Text в SwiftUI с помощью динамической стилизации содержимого

В этой статье мы рассмотрим, как расширить SwiftUI Text с помощью кастомизации любых частей его содержимого, как отдельных слов, так и более длинных сегментов.

Статья: https://apptractor.ru/info/articles/text-swiftui-stil.html
Платформа: iOS
👍1
Лучшие приложения с открытым исходным на Kotlin

Обсуждение на Reddit - знаете ли вы хорошие приложения с открытым исходным кодом, написанные на Kotlin, сложные и нормально структурированные?

• Bitwarden Android — менеджер паролей
• Now in Android — официальное учебное приложение Google для изучающих Android-разработку
• Atomic — Periodic Table — периодическая таблица химических элементов, пет-преокт одного из участников
• Telegram — исходники мессенджера
• Tachiyomi/Mihon — открытый ридер манги для Android (код сложен и не очень хорошо структурирован)
• KotlinConf — приложение самой большой конференции по Kotlin (сделано на Kotlin Multiplatform и Compose Multiplatform)
• Home Assistant Companion for Android — приложение Google для домашней автоматизации
• Rijksmuseum — мультимодульное мультиплатформенное приложение на Kotlin и Compose, которое предлагает захватывающий способ изучения художественной коллекции Рейксмузея в Амстердаме
• Premier League — полнофункциональное приложение с открытым исходным кодом на KMP, содержащее результаты матчей английской футбольной лиги, пет-преокт одного из участников
• Pokedex Compose — приложение про покемонов, которое демонстрирует современную разработку для Android с использованием Compose, Hilt, Coroutines, Flow, Jetpack и Material Design на основе MVVM-архитектуры

Статья: https://apptractor.ru/info/github/luchshie-prilozheniya-s-otkrytym-ishodnym-na-kotlin.html
Платформа: Android
👍1
📺 Видео и подкасты за неделю на @AppFiles

(iOS Ru) Нервное смузи из Swift Package Registry
(iOS Ru) Альтернативы XCUITest, или Как и зачем разработчику писать автотесты
(iOS En) Set Up a Local Test Server with Swift in Under 5 Minutes + iOS app SwiftUI
(iOS En) Expandable Header with Hero Effect - Slack Header Animation | SwiftUI
(iOS En) SwiftUI - Scratch to Reveal animation
(iOS En) What's new in Swift 6.1?
(iOS En) SwiftUI Micro-interactions - Slide To Confirm
(iOS En) Xcode 16.3 is Available Today (What's New?)
(And Ru) Modo в действии: быстрая и гибкая навигация для Jetpack Compose
(And Ru) Как сделать своп движка звонков в легаси-коде и не выгореть
(And Ru) Backup в Android, или Как сэкономить бизнесу миллионы
(And En) Linting on the Side of Caution: Safety & Security - Android Developers Backstage
(And En) Google Play PolicyBytes - April 2025 policy updates
(And En) Kotlin 2.1.20 - Atomics, UUIDs, and more! - TypeAlias Show
(Crs Ru) Это вам не игрушки: портирование кроссплатформенной С++ игры на iOS
(Crs Ru) Accessibility Flutter-приложений, или Как увеличить трафик на 20
(Crs En) Lynx Tutorial – JS Framework for Cross Platform Development
(Crs En) Hot Reload For Flutter Web is Finally in Beta
(Dev En) Top 5 Mobile System Design Concepts Explained
(Dev En) Freelancing as Mobile Dev vs. Full-time Job - Which Path Is Best For YOU?
(Dev En) Introducing Agent Development Kit
(Dev En) Train Your Own LLM – Tutorial

Что было год назад:

(And Ru) Экзоскелет для ExoPlayer
(Crs Ru) Как мы сделали ставку на KMP
(Crs Ru) Зачем мне Kotlin в iOS-разработке? Я только Swift выучил!
(Dev Ru) Как дизайнить доступность для скринридера
(Dev Ru) Проблемы маленьких приложений при увеличении нагрузки по данным
(Dev Ru) Как выжать все соки из Jenkins
(Dev Ru) Убиваем Lottie? Тащим Rive?
(Dev Ru) Вся правда про удаленку
(Dev Ru) Зачем нужен Zig, и чем он отличается от других языков
Please open Telegram to view this post
VIEW IN TELEGRAM
StorySDK - это платформа для создания и добавления историй в мобильные приложения (с веб-конструктором).

Интегрировав StorySDK вы сможете сделать онбординг, отображение групп историй с помощью виджета, изменять настройки, например, включение полноэкранного режима, показ/скрытие заголовка, установка продолжительности каждой истории и цвета прогресса.

Сам сервис бесплатен до 1000 MAU, дальше нужно будет платить.

StorySDK на GitHub: https://github.com/StorySDK/story-ios-sdk
Платформа: iOS
⭐️: 34
👍1
Демоприложения: как жить, когда у вас 90+ application-модулей

В предыдущей статье основной акцент был на сокращении времени сборки и синхронизации кода с Android Studio. Но так уж выходит, что, решая одну проблему, мы порождаем другие. Если раньше был один единственный application module, к которому подключались все остальные модули для сборки в конечный артефакт(apk, aab), то сейчас таких модулей стало приблизительно на 90 больше.

Меня зовут Роман Заремба и я расскажу, как мы ушли от кода интеграции в application-модулях, пересмотрели базовые решения, придумали подход collector + initializer, перешли на библиотеку App Startup, избавились от нее и стали использовать стандартный Java ServiceLoader.

Статья: https://habr.com/ru/companies/tbank/articles/899714/
Платформа: Android
👍1
SwiftUI: Реализация разделенного координатора совместно с DeepLink (Universal link)

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

Использование концепции MVVM порождает еще один философский вопрос: может ли один и тот же экран с одной и той же viewmodel иметь различные типы входных параметров. Конечно, для идеологии чистого кода — ответ однозначен. Но ведь если нет нужды в создании нового вида или новой view model, то подавляющее количество разработчиков предпочтет переиспользовать один и тот же экран и для отображения десериализированного объекта, и для сериализированных параметров, передаваемых строкой в пути навигации.

Статья: https://habr.com/ru/articles/899764/
Платформа: iOS
👍1
Интегрируем TimelineView в SwiftUI-приложение

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

Статья: https://apptractor.ru/info/articles/timelineview-swiftui.html
Платформа: iOS
👍1
WriteBuddy - помощник для ведения заметок на Compose. Есть два режима. Режим Sticky - это функция, позволяющая пользователям размещать на экране различные клейкие элементы, такие как стикеры, изображения и текстовые поля, и управлять ими. Пользователи могут добавлять наклейки, перемещать их, изменять их размер и свойства. Режим ToolMode предоставляет новые функциональные возможности благодаря сенсорному взаимодействию с пользователем. Тут пользователи могут писать на экране рукой или клеить ленты.

WriteBuddy на GitHub: https://github.com/henni99/WriteBuddy
Платформа: Android
⭐️: 93
Как работать с запросами разрешений в Appium: распознаём, что от нас хочет iOS

Мы разрабатываем и поддерживаем приложения для огромной пользовательской базы, и без мобильных автотестов тут не обойтись. Сегодня я расскажу, как мы решили одну из самых неприятных (из интересных) проблем в автоматизации iOS‑приложений — работу с системными запросами разрешений. Сами события возникли еще год назад, но хочется об этом рассказать. Если вы сталкивались с тем, что тесты падают из‑за неожиданно появляющихся системных диалогов — эта статья может вам помочь.

Статья: https://habr.com/ru/companies/bitrix/articles/900578/
Платформа: iOS/тестирование
Введение в Trio

В Airbnb мы разработали Android-фреймворк для экранной архитектуры Jetpack Compose, который мы назвали Trio. Trio построен на нашей библиотеке с открытым исходным кодом Mavericks, которая используется для поддержания навигации и состояния приложения внутри ViewModel.

Статья: https://apptractor.ru/info/articles/vvedenie-v-trio.html
Платформа: Android
1👍1
Не подсматривай: защищаем данные пользователей от скриншотов

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

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

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

Статья: https://habr.com/ru/companies/deiteriylab/articles/900028/
Платформа: разработка
1
Как я сократил время сборки Gradle на 50%

В этой статье мы рассмотрим практические стратегии повышения производительности сборки Gradle в Android-проектах, использующих Kotlin. Мы рассмотрим полезные конфигурации gradle.properties, обсудим, как обновление версий Gradle, Kotlin и Java может дать ощутимую разницу, а также подробно рассмотрим компромиссы между скриптами сборки на Groovy и Kotlin - да, Groovy все еще имеет небольшое преимущество, когда речь идет о скорости.

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

Статья: https://apptractor.ru/info/articles/gradle-50.html
Платформа: Android
1👍1
Kurozora - это универсальный портал для всего, связанного с аниме. Приложение дает вам доступ к огромному каталогу аниме, манги и игр. Оно разработано таким образом, чтобы быть отзывчивым, поддерживающим любые экраны, подстраивающимся в своей теме под любого пользователя. Внутри Swift, SwiftLint, R.swift и Jazzy и собственный KurozoraKit для работы, собственно, с API сайта.

Kurozora на GitHub: https://github.com/Kurozora/kurozora-app
Платформа: iOS
⭐️: 57
👍2
Осваиваем дебаунсинг в iOS с помощью Swift

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

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

Статья: https://medium.com/@connect2ayu/mastering-debouncers-in-ios-with-swift-prevent-unnecessary-work-with-elegance-7e04e46641d7
Платформа: iOS
👏: 40
👍2
От дашбордов к более глубокому пониманию: улучшите качество и производительность приложений с помощью новых сведений Play Console

Google представила обновления в Play Console, направленные на улучшение качества приложений и удобство работы разработчиков. Вот ключевые нововведения:

• Обновлённый дашборд
• Новые метрики для повышения качества
• Центр уведомлений

Статья: https://apptractor.ru/info/articles/ot-dashbordov-k-bolee-glubokomu-ponimaniyu-prilozheniy-obnovleniya-play-console.html
Платформа: Android
1