AppFiles - Mobile Development
Відкрити в Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Показати більше2 168
Підписники
Немає даних24 години
+47 днів
+1930 день
Архів дописів
Punch-hole Download Progress - индикатор загрузки вокруг камеры
Модуль Xposed, отображающий ход загрузки в виде анимированного кольца вокруг выреза для камеры.
Особенности:
• Кольцо прогресса вокруг выреза для камеры (через собственный DisplayCutout API) с возможностью настройки цвета, толщины, прозрачности и направления для каждого состояния (активно/завершено/неудачно)
• Анимация завершения с дополнительной тактильной обратной связью
• Бейдж счетчика загрузок
• Калькуляция смещения текста и значка при каждом повороте
• Выразительный пользовательский интерфейс настроек Material 3
• Поддержка тестового режима, рендеринга в режиме экономии заряда батареи и контура выреза в форме таблетки
Punch-hole Download Progress на GitHub: https://github.com/hxreborn/punch-hole-download-progress
Платформа: Android
⭐️: 191
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Как мы мигрируем навигацию на Compose в Android-приложениях с 400+ экранами
Меня зовут Константин Дубинко, я — Android-техлид в
hh.ru. Сейчас мы заканчиваем большой переезд навигации в двух Android-приложениях — для соискателей и работодателей. В этой статье я покажу, как у нас там устроена навигация, почему мы решили отказаться от Fragment-навигации и как превратили хаотичную миграцию с «островками» новой архитектуры в управляемый процесс с метриками и понятным планом работ. Заодно расскажу, какие решения сработали, какие — нет, и что я сделал бы иначе, если бы начинал заново.
Статья: https://habr.com/ru/companies/hh/articles/1044842/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьЧто нового в UIKit после WWDC26
На сегодняшний день использование UIKit практически ничего не стоит. Я бы сказал, что сейчас самое подходящее время (да, действительно!), чтобы попробовать наш старый добрый UI-фреймворк в вашем приложении. Apple предоставила доступ к навыкам, позволяющим сделать это правильно, эффективно и быстро. Итак, давайте посмотрим, что нового.
Статья: https://apptractor.ru/info/articles/chto-novogo-v-uikit-posle-wwdc26.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Что нового в SwiftUI после WWDC26
Только что был опубликован доклад Platforms State of the Union, и у нас появилось много новых API, которые нужно изучить, исследовать и использовать для создания новых функций и приложений. Давайте начнем с самого важного фреймворка для наших приложений. На этой неделе мы рассмотрим, что WWDC26 привносит в новую версию SwiftUI.
Статья: https://apptractor.ru/info/articles/chto-novogo-v-swiftui-posle-wwdc26.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
PropertyTestingKit - фазз-тестирование с учетом покрытия кода
PropertyTestingKit внедряет фаззинг с учетом покрытия кода в тестирование Swift.
Фичи:
• Фаззинг с учетом покрытия кода — автоматическое обнаружение входных данных, открывающих новые пути выполнения кода
• Сохранение корпуса — сохранение и воспроизведение интересных входных данных между запусками тестов
• Регрессионное тестирование — воспроизведение сохраненного корпуса для выявления регрессий
• Фаззинг с планированием — детерминированное исследование чередования параллельных задач для выявления зависимых от порядка состояний гонки
• Высокая пропускная способность — ~35 млн итераций/сек с полной изоляцией параллельного покрытия для каждого теста
PropertyTestingKit на GitHub: https://github.com/doordash-oss/PropertyTestingKit
Платформа: iOS
⭐️: 12
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Представляем AdaEngine 0.1.0 — игровой движок на Swift
После долгого пути я рад представить AdaEngine 0.1.0: бесплатный игровой движок и фреймворк для приложений с открытым исходным кодом, написанный на Swift.
AdaEngine строится вокруг простой идеи: Swift должен быть отличным языком для создания игр, интерактивных приложений, инструментов и творческого софта — не только приложений для платформ Apple. Swift выразителен, безопасен, быстр и удобен в написании. AdaEngine пытается перенести эти сильные стороны в разработку игр через модульный движок, data-driven архитектуру и API, которые ощущаются естественно для Swift-разработчиков.
Статья: https://habr.com/ru/articles/1044142/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Play Billing Skills - навыки интеграции Google Play Billing
Play Billing Skills превращает два руководства RevenueCat — руководство по биллингу Google Play и руководство по Android SDK RevenueCat — в готовые инструкции для агентов по организации оплаты покупок на Android. Каждый навык ориентирован на выполнение задачи. Вы просите своего агента «настроить RTDN», «обработать неудачное продление» или «перейти на Play Billing Library 9», и соответствующий навык проведет агента через вызовы API, коды ответов, шаги проверки и подводные камни, с которыми сталкиваются разработчики в продакшене.
Claude Code поддерживает эти навыки нативно через систему навыков. Режим агента Android Studio, Gemini CLI, Cursor и другие агенты ИИ-программирования могут использовать те же инструкции в виде обычного Markdown, указав инструменту соответствующий каталог навыков.
Библиотека предоставляет агенту конкретные шаблоны, коды ошибок, переходы состояний подписки и распространенные проблемы, которые отличают интеграцию биллинга, работающую в демонстрационной версии, от той, которая выдерживает льготные периоды, блокировку учетных записей, возврат средств и изменения цен в рабочей среде.
Play Billing Skills на GitHub: https://github.com/RevenueCat/play-billing-skills
Платформа: Android
⭐️: 30
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Вышел Kotlin 2.4.0
Kotlin 2.4.0 уже вышел — релиз получился крупным и особенно интересным для тех, кто следит за развитием языка и мультиплатформы. Среди главных новинок: стабильные context parameters, explicit backing fields и улучшения для annotation use-site targets. В стандартной библиотеке стабилизировали UUID API и добавили проверку отсортированности коллекций.
Для JVM-разработчиков важны поддержка Java 26 и включённые по умолчанию аннотации в metadata. В Kotlin/Native появился support Swift packages as dependencies, обновился Swift export, а CMS GC теперь включён по умолчанию. Kotlin/Wasm тоже заметно прокачали: инкрементальная компиляция стала дефолтной, плюс появилась поддержка WebAssembly Component Model.
Есть изменения и в инструментах: Kotlin 2.4.0 совместим с Gradle 9.5.0, а Maven теперь автоматически согласует версии Java и JVM target. Ещё компилятор Kotlin стал последовательнее вести себя с inline-функциями при компиляции
.klib. Обновиться можно стандартно — поменять версию Kotlin в build scripts на 2.4.0; свежая версия уже входит в актуальные IntelliJ IDEA и Android Studio.
Новость: https://blog.jetbrains.com/kotlin/2026/06/kotlin-2-4-0-released/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьКак я избавился от тысяч строк валидации в Swift
Каждый раз, когда нужно добавить новую модель в проект, приходится писать буквально одинаковый код: с одинаковыми проверками, с одинаковыми корректировками, с одинаковыми
Codable, с одинаковыми тестами.
Статья: https://habr.com/ru/articles/1043520/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьЯ перестал доверять стримингам. Поэтому написал свой iOS-плеер — с CarPlay и без вранья про звук
Я перестал верить стримингам. Не философски, а практически. Половина любимых альбомов либо ушла из каталогов, либо вернулась пересведенной так, что слушать тошно. Концертные записи, винил‑рипы, региональные релизы — их там и не было. А моя коллекция в FLAC просто лежит на диске и никуда не девается.
Для своей коллекции я написал плеер. Для себя. Через полгода это превратилось в нишевое приложение для iOS на 11 языках: с собственным DSP, распознаванием музыки и CarPlay.
Что в итоге внутри и где было не очевидно. Места, в которых документация молчит, а ты сидишь и гадаешь, почему оно вообще так себя ведет.
Статья: https://habr.com/ru/articles/1043690/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
📺 Видео и подкасты за неделю
• How to back port new SwiftUI APIs to older iOS versions
• iOS 26 Style Mail App Tab bar Using SwiftUI
• 10 Super Common Android Interview Questions (+ Detailed Answers!)
• Journeys for Android Studio - Is This the Way To Go?
• Мифическая кроссплатформа
• AI не приносит денег
• Build Your Own AI Agent – Full Course with OpenAI, Langchain, Render Deployment
Прошлогодние видео:
• Привязать карту: что может быть проще?
• Архитектура для кросс-функциональных команд
• Как не наломать дров с Live Activity
• Баланс между скоростью и надежностью: переиспользовать нельзя перепроверять
• Катим в прод, не тестируя
• Figma + Compose. Упрощаем верстку
• Что хотят работодатели от Android-разработчика
• Кодревью опенсорс проекта или как выглядят 10 лет технического долга
• Сколько памяти нужно для сборки? Android-разработчикам о JVM
• Что скрывает State в Compose
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Swarm - фреймворе оркестрации агентов на Swift
Swarm - Swift-фреймворк для создания агентов и многоагентных рабочих процессов.
• Параллелизм Swift — это неотъемлемая часть функционала. Весь пакет построен на
StrictConcurrency.
• Инструменты остаются типобезопасными. Макрос @Tool генерирует JSON-схемы из структур Swift.
• Рабочие процессы могут выдерживать сбои. Надежное сохранение контрольных точек рабочих процессов позволяет возобновлять работу с явно заданного идентификатора контрольной точки.
• Облачные и локальные модели используют одни и те же абстракции. Foundation Models, Anthropic, OpenAI, Ollama, Gemini, MiniMax, OpenRouter и MLX — все они соответствуют одной и той же архитектуре.
• Все написано на Swift. AsyncThrowingStream, акторы, конструкторы результатов и макросы — используются все возможности Swift.
Swarm на GitHub: https://github.com/christopherkarani/Swarm
Платформа: iOS
⭐️: 484
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьКак оптимизировать картинки в Android и не сломать UX: метрики, практики и компромиссы
Когда экран с изображениями начинает тормозить, первая реакция обычно предсказуемая: выключить crossfade, включить кэш, добавить placeholder и надеяться, что этого достаточно.
Иногда это правда помогает. Но редко решает проблему системно.
На экранах с большим количеством изображений проблема почти никогда не сводится к одному багу. Чаще это цепочка мелких решений, которые по отдельности выглядят безобидно, а вместе начинают бить по слабым устройствам: слишком тяжёлые изображения, неудачный prefetch, лишняя телеметрия, дорогие анимации, лишние трансформации и декодирование.
Поэтому оптимизация картинок в Android — это не про один флаг в image loader. Это про то, как быстро экран становится визуально полным, насколько плавно он скроллится и сколько стоит каждый image request.
Статья: https://habr.com/ru/companies/uzum/articles/1032460/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Shelly - IDE для Android, ориентированная на ИИ-чаты
Shelly — это рабочее пространство, которое объединяет все компоненты на вашем Android-устройстве: локальную работу с терминалом, нативные PTY приложений, CLI Codex, ИИ панели, браузер/документацию, предварительный просмотр и фоновые API-агенты.
Нативная IDE для Android-терминала, позволяющая запускать настоящий Codex CLI в собственном PTY-приложении, с агентами ИИ, работающими через API — Gemini, Cerebras, Groq, Perplexity и локальными моделями — а также Git, Bash, Python и редакторами, встроенными в APK. Никакой Termux установки, никакой загрузки дистрибутива, никакой отдельной настройки менеджера пакетов. Никакого терминала в WebView, никакого удаленного бриджа для IDE. Откройте приложение, авторизуйте свои учетные записи ИИ и работайте в локальных многооконных терминалах на Android.
Shelly на GitHub: https://github.com/RYOITABASHI/Shelly
Платформа: Android
⭐️: 24
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Корутины и то как они работают на низком уровне
Обычно, когда ты начинаешь задаваться подобным вопросом, в голове возникает ассоциация с чем-то магическим. Есть какая-то неведомая сущность, которой ты говоришь что-то сделать и она что-то делает. При изучении Coroutines в самом начале пути ощущения у меня были точно такими же
Конечно же, никаких гномов-волшебников не существует, а сами Coroutines работают по определенным алгоритмам, причем не то чтобы очень сложным
В рамках этой статьи я не буду претендовать на полную достоверность и всезнайность. Я, как и многие тысячи разработчиков, ежедневно сталкиваюсь с Coroutines и просто хочу поделиться своим пониманием того, как они устроены и получить обратный фидбек.
Статья: https://habr.com/ru/articles/1041632/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Приоритизация эффективности использования памяти: важные шаги для Android 17
Хотя производительность приложения часто ассоциируют с плавным интерфейсом и быстрым стартом, именно память служит «тихим фундаментом», на котором строятся все эти видимые метрики. Не секрет, что мы наблюдаем сдвиг: объём и использование памяти устройства становятся важнее, чем когда-либо. В Android 17 мы не только продвинулись в оптимизациях памяти на уровне системы, но и предоставляем инструменты и API, которые помогут вам заранее подготовиться к более строгим требованиям к памяти позднее в этом году.
Статья: https://apptractor.ru/info/articles/prioritizatsiya-effektivnosti-ispolzovaniya-pamyati-vazhnye-shagi-dlya-android-17.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
OneWay - управление состоянием с однонаправленным потоком данных
OneWay — это простая, легковесная библиотека для управления состоянием, использующая однонаправленный поток данных. Она полностью совместима со Swift 6 и построена на основе Swift Concurrency. Её архитектура обеспечивает потокобезопасность на всех этапах.
Она легко интегрируется со всеми платформами и фреймворками Apple, не требуя сторонних зависимостей, что позволяет использовать её в чистом виде. OneWay можно использовать где угодно, а не только на уровне представления, для упрощения сложной бизнес-логики. Если вы хотите реализовать однонаправленную логику, OneWay — это простое и практичное решение.
OneWay на GitHub: https://github.com/DevYeom/OneWay
Платформа: iOS
⭐️: 107
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Как DuckDuckGo сократила время сборки Android-приложений до 57%
Работая с командой Gradle Technologies, DuckDuckGo использовала скрипты проверки сборки Develocity, чтобы систематически выявлять и исправлять проблемы, связанные с производительностью. Вот что они обнаружили — и чему могут научиться другие команды разработчиков Android.
Статья: https://apptractor.ru/info/articles/kak-duckduckgo-sokratila-vremya-sborki-android-prilozheniy-na-57.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Потоко-защищённая шина событий в Swift
В крупных приложениях для iOS взаимодействие между компонентами зачастую оказывается сложнее, чем сам компонент. Сервис завершает операцию, координатор должен отреагировать, возможно, потребуется обновить несколько экранов, и передача каждой зависимости по всему дереву навигации быстро начинает казаться излишней «рутинной» работой. Внедрение зависимостей и управление состоянием по-прежнему имеют своё место. Шина (данных) событий предоставляет нам ещё один инструмент для слабосвязанных уведомлений, где прямое управление добавило бы ненужную сложность. Цель этого компонента проста: позволить одной части приложения публиковать событие, а другим частям приложения — подписываться на события определенного типа. Реализация сосредоточена на типовой безопасности, потокобезопасном хранении, автоматической очистке при деаллокации владельца, явной отмене отдельных подписок, доставке MainActor для кода пользовательского интерфейса и поддержке AsyncStream для потребителей async/await.
Статья: https://habr.com/ru/articles/1042258/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Jetpack Compose New Style API - пример использования нового Style API
Небольшой экран для умного дома, созданный для изучения нового Jetpack Compose Foundation Style API.
Приложение целенаправленно сфокусировано: один экран управления кондиционером, чистая визуальная система в стиле Material 3 и несколько интерактивных состояний, демонстрирующих, как стили могут существовать вне обычной композиции, при этом сохраняя правильные значения темы в нужное время.
Что демонстрирует этот пример:
• Централизованный слой
AppTheme.styles для многократно используемых стилей компонентов
• Токены стилей обрабатываются внутри StyleScope с помощью CompositionLocal.currentValue
• Состояния нажатия, выбора и отключения с помощью rememberUpdatedStyleState
• Компактная область управления климатом с селектором режимов, скоростью вентилятора и чипом Eco
• Пользовательский индикатор температуры, созданный с помощью Compose Canvas
• Простой поток состояний в стиле MVVM с использованием ViewModel и StateFlow
Jetpack Compose New Style API на GitHub: https://github.com/ardakazanci/JetpackCompose-New-Style-API
Платформа: Android
⭐️: 19
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
