AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.13K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
MCP Kotlin SDK - Kotlin-реализация Model Context Protocol (MCP), предоставляющая клиентские и серверные возможности для интеграции с LLM.

Model Context Protocol дает возможность приложениям предоставлять контекст для LLM стандартизированным способом, отделяя проблемы предоставления контекста от фактического взаимодействия с LLM. Этот Kotlin SDK реализует полную спецификацию MCP, что позволяет легко:

• Создавать MCP-клиентов, которые могут подключаться к любому MCP-серверу
• Создавать MCP-серверы, предоставляющие ресурсы, промпты и инструменты.
• Использовать стандартные транспорты, такие как stdio, SSE и WebSocket
• Обрабатывать все сообщения протокола MCP и события жизненного цикла

MCP Kotlin SDK на GitHub: https://github.com/modelcontextprotocol/kotlin-sdk
Платформа: Android
⭐️: 359
🔥1
Как работать с Custom Layout в Jetpack Compose

Сегодня я расскажу про кастомные Layout в Jetpack Compose. Они пригодятся, например, если вы разрабатываете свою дизайн-систему или хотите использовать сложные лейауты, которые есть во View-системах, но ещё не появились в вашей версии Jetpack Compose.

Если вы привыкли к кастомным View, то работа с кастомными Layout в Compose может показаться немного непривычной, но на самом деле, как мы увидим далее — там больше общего, чем кажется на первый взгляд.

Статья: https://habr.com/ru/companies/avito/articles/894432/
Платформа: Android
Как я «взломал» популярное приложение и добыл корпоративный токен OpenAI

Если OpenAI-токен попадет в руки злоумышленника, это может привести к серьезным последствиям: несанкционированный доступ к платным API, утечка конфиденциальных данных, подделка запросов от имени компании и внезапные финансовые потери из-за неконтролируемого расхода средств. (цитата chatGPT).

Статья: https://habr.com/ru/articles/894412/
Платформа: разработка/безопасность
Топ-7 утечек памяти Android и как их избежать

• Статический контекст: классическая ловушка
• Внутренние классы и лямбды: молчаливые хранители
• Зомби потоки и корутины
• Забытые слушатели: фантомные наблюдатели
• Спагетти из синглтонов
• View вампиры: UI-компоненты, которые не хотят умирать
• Ошибки с растровыми изображениями и монстры состояний

+ Ваш набор инструментов для борьбы с утечками 2025

Статья: https://apptractor.ru/info/articles/top-7-utechek-pamyati-android-i-kak-ih-izbezhat.html
Платформа: Android
Blocks - крошечный клон Minecraft на C и GLSL с использованием нового SDL3 GPU API.

Фичи:

• Процедурная генерация мира
• Параллельная загрузка чанков
• Блоки и растения
• Прозрачность (ограниченная)
• Отложенный рендеринг
• Направленные тени
• SSAO
• Затенение глубины воды
• Постоянные миры

Blocks на GitHub: https://github.com/jsoulier/blocks
Платформа: разработка
⭐️: 105
2
This media is not supported in your browser
VIEW IN TELEGRAM
Mocking Star - это мощный инструмент для имитации запросов, предназначенный для упрощения мокирования http-запросов, отладки работы с сетьюи использования UI-тестов для ваших приложений.

Ключевые особенности:

• Мокирвоание запросов: легко подделывайте запросы и тестируйте различные случаи с помощью сценариев
• Модификация запросов: модифицируйте перехваченные запросы, чтобы протестировать различные граничные случаи, что позволит вам оценить производительность приложения в различных условиях
• Поддержка отладки: используйте Mocking Star для отладки сетевых запросов на вашем mac
• Тестирование пользовательского интерфейса: интегрируйте Mocking Star в тесты пользовательского интерфейса, создавая надежную и контролируемую среду тестирования для проверки функциональности вашего мобильного приложения
• Плагины: пишите собственные плагины и расширяйте функциональность
• Клиенты для iOS и Android приложений

Mocking Star на GitHub: https://github.com/Trendyol/mockingstar
Платформа: тестирование
⭐️: 157
Видео и подкасты за неделю на @AppFiles

(iOS Ru) Исследуем мир фото и видео редакторов
(iOS Ru) Найди и исправь ошибки в коде — Задачи с собеседования
(iOS Ru) Запускаем приложения на своем iOS-симуляторе
(iOS Ru) Осторожно, Combine!
(iOS Ru) Позаботимся о памяти при использовании value-типов
(iOS Ru) Swift – больше, чем язык для iOS
(iOS En) Videos from Swift Heroes 2024
(iOS En) Staggered Animated View Using SwiftUI
(iOS En) Advanced SwiftUI Animations - PhaseAnimator
(iOS En) A case for Custom Bindings in SwiftUI: Essential Tips and Tricks
(iOS En) VoiceMemos Waveform Audio Scrubber Using SwiftUI - Waveform Visualization
(And Ru) Почему вам стоит включить Gradle Configuration Cache
(And Ru) Интеграция GeckoView в Dynamic Feature
(And Ru) Последнее слово в Android-навигации
(And En) Introduction to the SDK Runtime
(And En) How to Refactor Legacy Android Code With a Clear Step-By-Step Approach
(And En) Applying the Observer Pattern in Kotlin
(And En) Validating the chaos of RSS feeds with JetBrains’ Junie & some domain modeling sorcery
(Crs Ru) Kotlin не для Android
(Crs Ru) Как мы делали суперапп «Дилер онлайн», и что из этого получилось
(Crs Ru) Совместная работа Kotlin/Native GC и ARC в iOS
(Dev Ru) Правовой статус кода

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

(Crs Ru) Flutter Dev Podcast #45: Собеседования на позицию Flutter-разработчика
(Dev Ru) Пишем рекомендательную систему музыки на Java
(Dev Ru) Задача из Моего Собеседования в Amazon
(Dev Ru) Ада Лавлейс и программирование
Осознанный подход к метрикам
Kotlin и Jetpack Compose: портируем DOOM на смарт-часы

Я взялся за этот проект для Android Wear просто потому, что это интересно, и не так много людей видели, как на часах работает полноценная 3D‑игра. Однако я также хочу, чтобы проект был доступен и для «стандартного» Android. Таким образом, читатели, у которых нет смарт‑часов, смогут наслаждаться тем же кодом на своих смартфонах.

Статья: https://habr.com/ru/companies/otus/articles/894514/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
AnimationSequence - это мощная, но интуитивно понятная библиотека Jetpack Compose (поддерживает Android, iOS, Desktop и Web), разработанная для упрощения последовательной анимации в ваших приложениях для Android. С минимальными усилиями создавайте элегантные, отзывчивые и иерархические анимации, улучшая пользовательский опыт и оживляя пользовательский интерфейс.

AnimationSequence на GitHub: https://github.com/pauloaapereira/AnimatedSequence
Платформа: Android
⭐️: 48
👍1
SwiftUI. Навигация по строке в разделяемом координаторе

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

Статья: https://habr.com/ru/articles/894936/
Платформа: iOS
Как мы ускоряли Android-сборку «селлера»

Скорость сборки проекта напрямую влияет на time to market продукта и (внезапно) удовольствие от процесса разработки. Если каких-то 50 лет назад время компиляции могло доходить до нескольких дней, и это считалось нормальным, то сейчас даже лишняя пара минут сборки проекта в Android Studio может заставить понервничать. Чтобы сберечь здоровье себе и CI, скорости сборки проекта нужно уделять внимание.

Статья: https://habr.com/ru/companies/ozontech/articles/894364/
Платформа: Android
Dagger 2 и жизненный цикл

У нас было приложение‑монолит с главным ComponentManager, где строился весь граф зависимостей. Файл был немаленький. Также во всех фрагментах необходимо было вручную создавать DI‑компонент и следить за его чисткой, а разработчики то и дело забывали про это или чистили неправильно.

Потом началась кампания по выносу фичёвого кода в отдельные модули. С каждым новым модулем всё чаще выстреливала циклическая зависимость, и приходилось писать обвязку (прокси‑класс). Главный ComponentManager оставался связующим звеном между фичёвыми модулями, через которое происходил переброс зависимостей, так что он всё ещё был большим и сложным. Иногда рефакторинг, связанный с перемещением кода из одного модуля в другой, вызывал многочасовую борьбу за нахождение пути решения проблемы «почему сборка никак не соберётся?». Иногда, чтобы доставить зависимость из одного модуля в другой, нужно было строить сложные конструкции, как при игре в «Твистер».

Вся эта увлекательная и мучительная игра продолжалась довольно долго, пока на помощь, как бы странно это ни звучало, не пришёл новомодный Compose. Тогда мы только начинали его осваивать, и я решил сделать небольшой pet‑проект, состоящий из двух экранов, с применением Compose для его изучения. Естественно, в этот проект подключил всё самое современное из библиотек, включая Dagger 2. Как обычно, немного повозившись с настройкой DI, в голове всплыла вся та боль, которую мы испытываем в нашем проекте.

Статья: https://habr.com/ru/companies/sberbank/articles/893856/
Платформа: Android
👍2
Неожиданно легко допустить утечку памяти в вашем приложении, даже не осознавая этого. Если утечки памяти остаются без внимания, они могут увеличить объем занимаемой памяти вашего приложения, что приводит к более быстрому завершению работы приложения в фоновом режиме. В тяжелых случаях ваше приложение может быть завершено даже во время работы на переднем плане.

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

DriftCheck - это легковесная библиотека, которая поможет вам обнаружить циклы удержания и забытые ссылки, привязав ваши объекты к четко определенному жизненному циклу представлений UIKit/SwiftUI.

DriftCheck на GitHub: https://github.com/chrsmys/DriftCheck
Платформа: iOS
⭐️: 22
1
Как правильно организовать проект c модульной архитектурой в iOS-разработке

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

В этом материале я расскажу про ключевые моменты модульной архитектуры в iOS-приложениях, инструментах для ее внедрения и применения в наших проектах.

Статья: https://habr.com/ru/companies/ru_mts/articles/892444/
Платформа: iOS
👍1
Tack Android - это современное приложение-метроном для Android с красивым интерфейсом, которое имеет все функции, необходимые для отработки музыкального произведения. Также доступно отдельное приложение Wear OS с тактильными битами и множеством опций прямо на вашем запястье.

Tack Android на GitHub: https://github.com/patzly/tack-android
Платформа: Android
⭐️: 261
1
Трекер поездов и погоды с Raspberry Pi и E-Ink

Разработчик Сэм Бронер создал проект с использованием Raspberry Pi и E-Ink дисплея для отслеживания расписания поездов и прогноза погоды. Устройство отображает время прибытия ближайших поездов линий F и G нью-йоркского метро, а также текущую дату, время и погодные условия. Дисплей разделен на четыре секции: заголовок с датой и временем, трекер поездов, информация о погоде и "погодная шкала" на следующие 12 часов. ​

Аппаратная часть проекта включает 9,7-дюймовый E-Ink дисплей с разрешением 1200x825 пикселей, подключенный к Raspberry Pi 4b. Для программирования использовалась модульная архитектура, состоящая из движка отображения, системы компоновки, сервисов данных и контроллера приложения. Особое внимание уделено оптимизации обновления дисплея и обеспечения стабильности работы. ​

Подробные инструкции, список необходимых компонентов и исходный код доступны в репозитории на GitHub.

Статья: https://sambroner.com/posts/raspberry-pi-train
Платформа: разработка
1
Конкатенация против интерполяции текста в SwiftUI

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

Статья: https://apptractor.ru/info/articles/konkatenatsiya-protiv-interpolyatsii-teksta-v-swiftui.html
Платформа: iOS
👍1
Документируем код с помощью DocC

В настоящее время Apple предоставляет нам компилятор документации под названием DocC. DocC преобразует текст на основе Markdown в расширенную документацию для фреймворков и пакетов Swift. Сегодня мы изучим основы DocC, что позволяет нам предоставлять надлежащую документацию для нашего кода.

Статья: https://apptractor.ru/info/articles/docc.html
Платформа: iOS
👍2
Профилирование и бенчмаркинг Android-сборок

Оптимизация времени сборки — важный аспект эффективной разработки. В статье на ProAndroidDev рассмотрены инструменты для анализа и улучшения производительности сборки Gradle.

• Build Analyzer в Android Studio показывает длительность выполнения задач и предлагает рекомендации по оптимизации.
• Профилирование Gradle (--profile) создаёт локальный HTML-отчет с детальным разбором всех процессов.
• Gradle Scan (--scan) формирует удаленный отчёт, где можно увидеть влияние кеширования, зависимостей и сетевых операций.
• Gradle Profiler позволяет тестировать разные сценарии сборки, оценивать влияние изменений кода, ресурсов и макетов.

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

Статья: https://proandroiddev.com/profile-benchmark-android-builds-b572948c5be5
Платформа: Android

Обязательно поставьте 👍, если хотите эту статью на русском.
1
VDAnimation предоставляет мощный, декларативный способ создания сложных анимаций в SwiftUI с минимальным кодом. Создавайте анимации последовательно, параллельно, с настраиваемым временем и кривыми.

VDAnimation на GitHub: https://github.com/dankinsoid/VDAnimation
Платформа: iOS
⭐️: 20