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

Благодаря чистой архитектуре масштабировать проект будет максимально просто: нет никакой путанницы с зависимостями, всё лежит в строго отведенном ему месте, и для каждой новой фичи надо всего-то описать юзкейсы, репозитории и прикрепить это к экрану. Титанический труд в начале во имя упрощения разработки в дальнейшем!

Статья: https://habr.com/ru/articles/897564/
Платформа: Android
Используем бесплатный Moderation API от OpenAI в Swift

Интеграция Moderation API от OpenAI позволяет сбалансировать доступность контента и безопасность пользователей, гарантируя, что ваше приложение останется функциональным и ответственным.

Статья: https://apptractor.ru/all-api/ispolzuem-besplatnyy-moderation-api-ot-openai-v-swift.html
Платформа: iOS/разработка
Metro - новый фреймворк внедрения зависимостей для Android

Metro — это фреймворк для внедрения зависимостей во время компиляции, во многом вдохновленный Dagger, Anvil и Kotlin-Inject. Он стремится объединить их лучшие функции в одно целостное решение, добавив несколько новых и реализуя их в виде плагина компилятора.

Статья: https://apptractor.ru/info/articles/metro-di.html
Платформа: Android
👍1
Escape — минималистичный лаунчер для Android 8.1 и выше. Он имеет современный, простой и настраиваемый дизайн со списком приложений на главном экране и дополнительными часами с виджетами, а также поддерживает цветовые схемы Material UI и такие функции, как скрытые приложения.

Escape на GitHubhttps://github.com/GeorgeClensy/Escape-Launcher
Платформа: Android
⭐️: 44
Почему нельзя использовать RecyclerView в NestedScrollView и как это исправить?

Чтобы ответить на этот вопрос, сначала нужно понять как работает RecyclerView. У Recycler есть ViewHolder'ы, часть из них видны, а другие два пользователь не видит. Один расположен сверху, второй снизу. При прокрутки списка, старые ViewHolder'ы меняются на новые, потому что в адаптере срабатывает onBindViewHolder.

Статья: https://habr.com/ru/articles/897894/
Платформа: Android
Вышел Swift 6.1

​Swift 6.1, выпущенный 31 марта 2025 года, представляет собой значительное обновление языка программирования Swift, направленное на повышение производительности, улучшение диагностики и расширение возможностей управления параллелизмом.

Анонс: https://www.swift.org/blog/swift-6.1-released/
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
Как я создал UI-конструктор с помощью Compose Multiplatform

Алекс Стил на Compose Multiplatform создал визуальный конструктор, который экспортирует код Compose, «как будто бы написанный человеком». В этой статье о некоторых моментах его разработки и особенностях работы с Kotlin и Compose Multiplatform для десктопов.

Статья: https://apptractor.ru/info/articles/paper-compose-multiplatform.html
Платформа: кроссплатформа
🔥1
DDKitSwift - универсальный фреймворк, который объединяет различные инструменты отладки посредством структуры плагинов. Встроенные инструменты:

• Логирование
• Тест сетевого подключения
• Сетевой пинг
• Определение FPS
• Просмотр файлов в песочнице
• Управление данными UserDefault
• Перехват и просмотр сетевых запросов

DDKitSwift на GitHub: https://github.com/DamonHu/DDKitSwift
Платформа: iOS
⭐️: 20
👍2
SwiftUI: Пишем простое фитнес-приложение с использованием HealthKit

В этой статье я предлагаю вместе создать простое приложение для тренировок, которое позволит вам ознакомиться с основами этого удивительного фреймворка. Мы будем разрабатывать приложение для watchOS, так как именно эта платформа, на мой взгляд, наилучшим образом раскрывает потенциал HealthKit.

Статья: https://habr.com/ru/companies/otus/articles/898762/
Платформа: iOS
👍1
Compose и YouTube: готовое к проду воспроизведение YouTube с помощью Jetpack Compose

​В статье автор Анатолий Фролов делится опытом интеграции воспроизведения YouTube-видео в приложение на основе Jetpack Compose. Стремясь предоставить пользователям возможность просмотра трейлеров и превью фильмов непосредственно в приложении, автор сталкивается с отсутствием официального API для такой интеграции в Compose. В качестве решения он использует AndroidView и библиотеку YouTube Player. Предложенный подход обеспечивает плавное и бесшовное воспроизведение YouTube-видео в приложениях на Jetpack Compose, улучшая пользовательский опыт и удовлетворяя запросы аудитории на встроенный видеоконтент.

Статья: https://proandroiddev.com/compose-meets-youtube-production-ready-youtube-playback-with-jetpack-compose-9e55013b411a
Платформа: Android
👍21
Быстро и гибко: интеграция Rust egui в SwiftUI

Автор делится опытом интеграции библиотеки пользовательского интерфейса egui, написанной на Rust, в приложение на SwiftUI. Столкнувшись с низкой производительностью стандартного компонента Table в SwiftUI и ограничениями NSTableView, автор решил исследовать альтернативные решения для улучшения производительности своего приложения.​

Выбор пал на egui — библиотеку, использующую подход immediate mode для построения интерфейса, что позволяет перерисовывать UI каждый кадр без сохранения состояния между обновлениями. Это обеспечивает высокую скорость и отзывчивость интерфейса.​

Для интеграции egui в SwiftUI автор предложил следующую архитектуру: основная структура приложения остается на SwiftUI, а egui используется для реализации производительно критичных компонентов. Связь между Swift и Rust осуществляется с помощью библиотеки swift-bridge, которая упрощает взаимодействие между этими языками.​

В качестве примера автор рассматривает создание простого окна чата, где переключение активных диалогов происходит на стороне Swift. Он подробно описывает процесс настройки проекта, включая создание статической библиотеки на Rust, настройку swift-bridge и реализацию рендерера с использованием wgpu для обработки графики.​

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

Статья: https://medium.com/@djalex566/fast-fluid-integrating-rust-egui-into-swiftui-30a218c502c1
Платформа: iOS
👏: 117
👍2
Полное руководство по созданию многоцветных тематических и адаптивных иконок для Android-приложений

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

Статья: https://apptractor.ru/info/articles/app-icons-android.html
Платформа: Android
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