AppFiles - Mobile Development
前往频道在 Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
显示更多2 169
订阅者
+224 小时
无数据7 天
+830 天
帖子存档
Android Gradle Graph Plugin - мониторинг зависимостей проекта
Gradle плагин поможет оптимизировать модули в больших многомодульных Android-проектах. Он показывает лишние зависимости в модулях, подскажет, какие модули лучше переделать в котлин модуль, сгенерирует граф зависимостей и метрики.
Плагин был одним из инструментов для ускорения сборки. Подробнее об опыте ускорения сборки проекта 1Fit можете узнать в докладе.
Android Gradle Graph Plugin на GitHub: https://github.com/Anelkad/gradle-portal-verification-PENLI5B8
Платформа: Android
⭐️: 17
Улучшение доступности в Android-приложениях
В этом руководстве вы узнаете, как используя инструменты Android создавать приложения, доступные для всех. Обеспечение корректного описания контента, удобных сенсорных областей и читаемого цветового контраста — это простые шаги, которые сделают наше приложение более доступным и удовлетворят потребности каждого пользователя.
Статья: https://apptractor.ru/info/articles/uluchshenie-dostupnosti-v-android-prilozheniyah.html
Платформа: Android
Cupertino - локальный сканер документации Apple и сервер MCP
Cupertino - инструмент для сканирования, индексирования и предоставления документации Apple для разработчиков агентам искусственного интеллекта через протокол контекста модели (MCP).
Cupertino — это локальная, структурированная, готовая к использованию с ИИ система документации для платформ Apple. Она:
• Сканирует документацию разработчиков Apple, Swift.org, предложения Swift Evolution, рекомендации по проектированию пользовательского интерфейса, устаревшие руководства Apple Archive и метаданные пакетов Swift
• Индексирует всё в быструю, доступную для поиска базу данных SQLite FTS5 с рейтингом BM25
• Предоставляет документацию агентам ИИ, таким как Claude, через протокол контекста модели (MCP)
• Обеспечивает автономный доступ к более чем 302 424 страницам документации для 307 фреймворков
Зачем это нужно?
• Больше никаких галлюцинаций: агенты ИИ получают точную и актуальную документацию по API Apple
• Автономная разработка: работайте с полной документацией без доступа к интернету
• Детерминированный поиск: один и тот же запрос всегда возвращает одинаковые результаты
• Локальный контроль: управляйте своей документацией, проверяйте базу данных, создавайте сценарии рабочих процессов
• Дизайн, ориентированный на ИИ: создан специально для интеграции с агентами ИИ через MCP
Cupertino на GitHub: https://github.com/mihaelamj/cupertino
Платформа: iOS
⭐️: 105
Я уменьшил iOS-приложение с 200 до 8 МБ: побочные эффекты, которых я не ожидал
Уменьшить размер приложения с 200 до 8 МБ — легко.
Жить с последствиями — вот это нелегко.
Это история о том, как я слишком много оптимизировал, слишком поздно это понял и случайно создал один из самых запутанных кошмаров отладки в своей карьере.
Статья: https://apptractor.ru/info/articles/200-8.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Создание приложения с меню на Flutter, которое не занимает много памяти
Расскажу вам в этой статье, как я снизил потребление памяти моего macOS-приложения на Flutter более чем на 90%. Это потребовало неожиданно много усилий и включало создание собственного хоста для Flutter, разработку пользовательского плагина для перетаскивания и отладку кучи кода на Rust.
Статья: https://habr.com/ru/companies/piter/articles/976000/
Платформа: кроссплатформа
ComposeGuard - обнаружение нарушений правил и лучших практик Jetpack Compose
ComposeGuard — это плагин для IntelliJ/Android Studio, который обеспечивает обнаружение нарушений лучших практик Compose в режиме реального времени во время написания кода. Он анализирует ваши компонуемые функции и выделяет проблемы на основе документации по правилам Compose.
Вместо того чтобы ждать проверок линтера во время сборки или проблем в рантайме, вы получаете мгновенную обратную связь прямо в вашей IDE с визуальными индикаторами, быстрыми исправлениями и подробными объяснениями.
ComposeGuard на GitHub: https://github.com/AndroidPoet/compose-guard
Платформа: Android
⭐️: 17
9 типичных ошибок в Kotlin Flow, которые вы, вероятно, совершаете.
Автор делится своим опытом, собранным в ходе код-ревью реальных Android-проектов. Он отмечает, что, несмотря на всю мощь Kotlin Flow, разработчики часто сталкиваются с неочевидным поведением, которое может приводить к тихой отмене работы, повторному выполнению ресурсоемких операций или неожиданным проблемам с жизненным циклом. В статье подробно рассматриваются девять распространенных ошибок, каждая из которых сопровождается примерами плохого и хорошего кода и краткими практическими правилами, применимыми в реальной разработке.
Статья: https://medium.com/@af2905g/9-kotlin-flow-mistakes-youre-probably-making-c946ad750452
Платформа: Android
📺 Видео и подкасты за неделю
•
(iOS Ru) Разбор кода: iOS-приложение для медитации на Swift
• (iOS En) SwiftUI Animated Tab Icons - Symbol Effects Tab Bar
• (iOS En) RichText Notes App - AttributedStrings and SwiftData
• (iOS En) Interactive Map Carousel | MapKit | Map Animations | SwiftUI
• (And Ru) Как сделать приложение за 10 минут? | FlowMVI Часть 1 - Часть 2 - Часть 3
• (And XR) The Android Show | XR Edition
• (And XR) Getting started developing on AI Glasses
• (And XR) What's new in the Android XR SDK for Unity
• (And XR) Designing interfaces for wired XR glasses
• (And XR) Designing audio experiences on AI Glasses
• (And XR) XR Journey: From Snapdragon Spaces to Android XR
• (And XR) Design best practices for display AI Glasses
• (And XR) What's new in the Jetpack XR SDK for immersive experiences
• (And En) Bring your own model - Android Developers Backstage
• (And En) Bottom Nav With Multiple Back Stacks In Navigation3
• (And En) Nested Nav Graphs & Shared ViewModels With Navigation3
• (And En) FaceCut App - Create Beautiful Portraits in minutes
• (Crs En) Why iOS Devs Struggle with KMP (and How to Fix It)
• (Dev Ru) Заменит ли AI разработчика
• (Dev Ru) SWE-агенты — Пишем код, LLM, автономный ИИ
• (Dev Ru) Open Source: альтруизм или скрытая выгода?
• (Dev Ru) Как внедрить ИИ в разработку и подружиться с безопасниками
• (Dev Ru) Как выявлять баги до первой строчки кода: опыт внедрения тест-анализа и тест-дизайна
• (Dev Ru) Как мы делаем больше 10 релизов в день без регресса
Прошлогодние видео:
• (And Ru) Полный разбор Kotlin Delegated Property
• (Crs Ru) BA x Flutter: взаимодействие отделов, запуск кроссплатформы и почему хорошее ТЗ — бич креативности
• (Dev Ru) Карьера и лидерство в IT
• (Dev Ru) Вся правда о грейдах, ревью и промоушенах
• (Dev Ru) Искусство создания антихрупкого APIXcodeProj - работа с проектами Xcode
XcodeProj — это библиотека от Tuist, написанная на Swift, для анализа и работы с файлами проектов Xcode. С ее помощью можно писать скрипты и автоматизировать задачи в проекте. Например, можно создать скрипт, который будет синхронизировать ключ с версией проекта с текущим тегом в Git, представляющим версию проекта.
XcodeProj на GitHub: https://github.com/tuist/XcodeProj
Платформа: iOS
⭐️: 2.2K
RemoteCompose: другая парадигма SDUI в Jetpack Compose
RemoteCompose всё ещё находится в разработке AndroidX и официально пока не опубликован, однако концепция очень многообещающая.
Сервер перехватывает (capture) любой макет Jetpack Compose и выдает его в компактном сериализованном формате. Это своего рода «скриншот» вашего пользовательского интерфейса, только вместо пикселей вы захватываете фактические инструкции отрисовки. Этот полученный документ содержит всё необходимое для воссоздания пользовательского интерфейса: фигуры, цвета, текст, изображения, анимацию и даже интерактивные области касания. На стороне сервера пишется стандартный код Compose. Не нужно изучать новый DSL (Domain-Specific Language), поддерживать схему JSON или осваивать язык шаблонов. Если вы можете написать это на Compose, вы можете захватить это с помощью RemoteCompose.
В приложении работает простой (платформенный) плеер, который управляет показом и взаимодействием с этим ByteArray. Клиентскому устройству не нужны ваши композабл функции, ваши модели представления или ваша бизнес-логика — ему нужны только байты документа и проигрыватель.
Статья: https://apptractor.ru/info/news/remotecompose.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Таким образом, преобразуя макеты Compose в переносимый формат документа, RemoteCompose обеспечивает управляемый сервером пользовательский интерфейс, а значит мгновенное A/B-тестирование, обновление контента в реальном времени и кроссплатформенную согласованность, сохраняя при этом производительность нативного рендеринга. Фреймворк справляется со сложностью сериализации, передачи и рендеринга, позволяя вам сосредоточиться на проектировании превосходного пользовательского опыта.
Flutter MethodChannel: как подружить Dart с нативным Android (и iOS)
Сегодня поговорим о том, как Flutter-приложению выйти за пределы чисто Dart-мирка и воспользоваться возможностями родной платформы, например, вызвать API Android или iOS напрямую. Например, есть какая-нибудь классная фича в Android SDK, а в Flutter её нет. Как быть? Ответ — писать собственный плагин и использовать MethodChannel.
Статья: https://habr.com/ru/companies/otus/articles/970094/
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Awesome Jetpack Compose Animations - коллекция анимаций Jetpack Compose
Awesome Jetpack Compose Animations - организованная коллекция (24 штуки) классных анимаций для кнопок, карточек, изображений и многого другого — идеально подходит для улучшения ваших приложений и проектов.
Awesome Jetpack Compose Animations на GitHub: https://github.com/Swapnil-J-Patil/Delightful_Animations
Платформа: Android
⭐️: 13
Уроки, извлеченные из собеседования по Swift
Некоторое время назад я проходил собеседование в команде разработчиков UI-фреймворка на SwiftUI в крупной компании-поставщике платформ. Поскольку я работал со SwiftUI с момента его выпуска, я был очень рад этой возможности. Но после многих лет работы в качестве независимого разработчика это было моё первое настоящее техническое собеседование за долгое время.
Спойлер: меня не взяли. Но я кое-чему научился в области алгоритмов Swift и тому, как подходить к техническим собеседованиям.
Статья: https://apptractor.ru/info/articles/uroki-izvlechennye-iz-sobesedovaniya-po-swift.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Создание кастомного Toolbar с Jetpack Compose. Подробный разбор всех попыток и решений
Сегодня предлагаю разобрать путь создания кастомного тулбара от первой кривой реализации до оптимизированного решения.
И главная проблема, которую надо решить при создании этого компонента это центрирование title и subtitle. Эта проблема возникает потому что у нас может быть тулбар с разным количеством иконок по обе стороны от заголовка, текстом и иконками или только с title. И если ширина иконок у нас стандартна (44 dp), и достаточно просто умножить эту ширину на количество иконок справа, чтобы понять свободное пространство для title и subtitle, то с текстом с одной или с двух сторон всё намного сложнее, так как мы не можем заранее вычислить ширину этого текста, а значит не можем правильно центрировать и задать ширину title и subtitle.
В этой статье я расскажу, как я решил этот вопрос.
Статья: https://habr.com/ru/companies/psb/articles/974368/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
TakeoffKit - современный механизм синхронизации через CloudKit для любой локальной базы данных
TakeoffKit - это библиотека Swift, упрощающая синхронизацию локальных данных с использованием CloudKit, абстрагируясь от его многочисленных сложностей, таких как преобразование CKRecord, ограничение скорости запросов, обработка ошибок и многое другое. Она предоставляет механизм синхронизации, аналогичный CKSyncEngine от Apple, но с более точным контролем и лучшей обратной совместимостью. Механизм синхронизации разработан для работы с любой локальной средой хранения данных — CoreData, SwiftData, Realm и т.д.
TakeoffKit на GitHub: https://github.com/orloff-n/TakeoffKit
Платформа: iOS
⭐️: 25
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Как Vercel перенесли магию v0 в нативное приложение
Vercel делится тем, как они создавали iOS-версию своего AI-генератора интерфейсов v0. Спойлер: это не Swift и не Flutter. Это мощная демонстрация того, куда движется экосистема React.
Ключевые моменты из статьи:
• React Native + Expo: Основа приложения. Они использовали Expo (с Continuous Native Generation), что позволило веб-разработчикам писать нативный код, практически не выходя из привычной среды.
• React Server Components (RSC) на мобилке: Это самое интересное. Приложение v0 использует ту же архитектуру, что и веб-версия. Сервер стримит компоненты прямо на устройство. Это позволяет переиспользовать огромные куски логики.
• Общий код: Благодаря монорепозиторию (Turborepo), они делят типы, утилиты и даже UI-компоненты между Next.js (веб) и Expo (iOS).
• Стриминг: Ощущение "магии", когда код пишется у вас на глазах, реализовано через потоковую передачу данных. Это не просто запрос-ответ, это живой поток токенов от LLM, который рендерится в реальном времени.
• Производительность: Чтобы скролл и анимации были плавными (60fps), тяжелые вычисления вынесены в отдельные потоки или обрабатываются на сервере.
Vercel доказывает, что граница между вебом и нативом стирается. Если у вас уже есть крутая команда React-разработчиков, вам не обязательно нанимать отдельный штат iOS-инженеров, чтобы сделать продукт мирового уровня.
Статья: https://vercel.com/blog/how-we-built-the-v0-ios-app
Платформа: кроссплатформа
Перетаскивание и буфер обмена с помощью Transferable
Используя
Transferable, вы не только упрощаете реализацию, но и делаете своё приложение совместимым с современными формами взаимодействия, от буфера обмена до перетаскивания, используя единую модель данных.
Статья: https://apptractor.ru/info/articles/peretaskivanie-i-bufer-obmena-s-pomoschyu-transferable.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьMaterialKolor - динамическая цветовая схема Material3 из исходного цвета
MaterialKolor - библиотека Compose Multiplatform для создания динамических цветовых палитр Material Design 3 из любого цвета. Доступные платформы: Android, iOS, JVM (Desktop) и JavaScript/wasm (браузер). Основу этой библиотеки составляет репозиторий material-color-utilities. В настоящее время это библиотека доступна только на Java, и автор хотел сделать её доступной для проектов Kotlin Multiplatform. Исходный код был взят и преобразован в библиотеку Kotlin Multiplatform.
MaterialKolor на GitHub: https://github.com/jordond/MaterialKolor
Платформа: Android/кроссплатформа
⭐️: 755
Создание анимированных полос в Jetpack Compose
Если мы хотим нарисовать и анимировать полоски в Jetpack Compose, мы можем использовать градиент с его параметрами.
Статья: https://apptractor.ru/info/articles/stripes-jetpack-compose.html
Платформа: Android
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
