ch
Feedback
AppFiles - Mobile Development

AppFiles - Mobile Development

前往频道在 Telegram

Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.

显示更多
2 164
订阅者
+124 小时
+47
+1830
帖子存档
Вышел 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 и без вранья про звук Я перестал верить стримингам
Я перестал доверять стримингам. Поэтому написал свой iOS-плеер — с CarPlay и без вранья про звук Я перестал верить стримингам. Не философски, а практически. Половина любимых альбомов либо ушла из каталогов, либо вернулась пересведенной так, что слушать тошно. Концертные записи, винил‑рипы, региональные релизы — их там и не было. А моя коллекция в FLAC просто лежит на диске и никуда не девается. Для своей коллекции я написал плеер. Для себя. Через полгода это превратилось в нишевое приложение для iOS на 11 языках: с собственным DSP, распознаванием музыки и CarPlay. Что в итоге внутри и где было не очевидно. Места, в которых документация молчит, а ты сидишь и гадаешь, почему оно вообще так себя ведет. Статья: https://habr.com/ru/articles/1043690/ Платформа: iOS 👨‍🦯‍➡️ 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: метрики, практики и компромиссы Когда экран с изображениями начинает т
Как оптимизировать картинки в Android и не сломать UX: метрики, практики и компромиссы Когда экран с изображениями начинает тормозить, первая реакция обычно предсказуемая: выключить crossfade, включить кэш, добавить placeholder и надеяться, что этого достаточно. Иногда это правда помогает. Но редко решает проблему системно. На экранах с большим количеством изображений проблема почти никогда не сводится к одному багу. Чаще это цепочка мелких решений, которые по отдельности выглядят безобидно, а вместе начинают бить по слабым устройствам: слишком тяжёлые изображения, неудачный prefetch, лишняя телеметрия, дорогие анимации, лишние трансформации и декодирование. Поэтому оптимизация картинок в Android — это не про один флаг в image loader. Это про то, как быстро экран становится визуально полным, насколько плавно он скроллится и сколько стоит каждый image request. Статья: https://habr.com/ru/companies/uzum/articles/1032460/ Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Shelly - IDE для Android, ориентированная на ИИ-чаты Shelly — это рабочее пространство, которое объединяет все компоненты на
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 Хотя производительность приложения часто ассоциируют с плавным интерфейсом и быстрым стартом, именно память служит «тихим фундаментом», на котором строятся все эти видимые метрики. Не секрет, что мы наблюдаем сдвиг: объём и использование памяти устройства становятся важнее, чем когда-либо. В Android 17 мы не только продвинулись в оптимизациях памяти на уровне системы, но и предоставляем инструменты и API, которые помогут вам заранее подготовиться к более строгим требованиям к памяти позднее в этом году. Статья: https://apptractor.ru/info/articles/prioritizatsiya-effektivnosti-ispolzovaniya-pamyati-vazhnye-shagi-dlya-android-17.html Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

OneWay - управление состоянием с однонаправленным потоком данных OneWay — это простая, легковесная библиотека для управления
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 использова
Как 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 взаимодействие между компонентами зачастую оказывается с
Потоко-защищённая шина событий в Swift В крупных приложениях для iOS взаимодействие между компонентами зачастую оказывается сложнее, чем сам компонент. Сервис завершает операцию, координатор должен отреагировать, возможно, потребуется обновить несколько экранов, и передача каждой зависимости по всему дереву навигации быстро начинает казаться излишней «рутинной» работой. Внедрение зависимостей и управление состоянием по-прежнему имеют своё место. Шина (данных) событий предоставляет нам ещё один инструмент для слабосвязанных уведомлений, где прямое управление добавило бы ненужную сложность. Цель этого компонента проста: позволить одной части приложения публиковать событие, а другим частям приложения — подписываться на события определенного типа. Реализация сосредоточена на типовой безопасности, потокобезопасном хранении, автоматической очистке при деаллокации владельца, явной отмене отдельных подписок, доставке MainActor для кода пользовательского интерфейса и поддержке AsyncStream для потребителей async/await. Статья: https://habr.com/ru/articles/1042258/ Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Jetpack Compose New Style API - пример использования нового Style API Небольшой экран для умного дома, созданный для изучения
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: код, инструменты, практики, производительность

Обертки свойств в Swift: сокращаем шаблонный код Раньше я везде копировал и вставлял один и тот же код валидации. Каждый раз,
Обертки свойств в Swift: сокращаем шаблонный код Раньше я везде копировал и вставлял один и тот же код валидации. Каждый раз, когда мне нужно было ограничить значение от 0 до 100, я писал один и тот же геттер и сеттер. Каждый раз, когда я хотел сохранить что-то в UserDefaults, — один и тот же шаблонный код. Каждый раз, когда мне нужен был потокобезопасный доступ, — одна и та же процедура блокировки/разблокировки. Затем я открыл для себя обертки свойств и почувствовал себя по-настоящему глупым, что не изучил их раньше. Обертки свойств позволяют вынести эту повторяющуюся логику свойств в многоразовый компонент. Напишите один раз, используйте везде. Синтаксис чистый, цель понятна, и ваш код значительно сокращается. SwiftUI использует их повсюду. @State@Binding@Published@Environment. Вы все это время использовали обертки свойств. Но вот в чем дело: вы можете создать свои собственные. И как только вы это научитесь это делать, вы будете удивляться, как вы вообще жили без них. Статья: https://apptractor.ru/info/articles/swift-property-wrappers.html Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Defer в Swift: уберитесь перед уходом Возможно, вы считаете ключевое слово defer одной из самых неоднозначных особенностей яз
Defer в Swift: уберитесь перед уходом Возможно, вы считаете ключевое слово defer одной из самых неоднозначных особенностей языка Swift, но в некоторых случаях оно очень полезно. Его можно использовать целенаправленно, и это обеспечит вам безопасность. На этой неделе мы поговорим о некоторых лучших практиках использования defer в Swift. Ключевое слово defer в Swift позволяет выполнить блок кода в конце текущего скоупа. Что означает текущий скоуп (область видимости)? Обычно это ближайшая пара фигурных скобок. Давайте рассмотрим несколько примеров. Статья: https://apptractor.ru/info/articles/defer.html Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Pine - нативный для Mac редактор кода Pine — это редактор кода для разработчиков, которым нужно быстрое нативное приложение д
Pine - нативный для Mac редактор кода Pine — это редактор кода для разработчиков, которым нужно быстрое нативное приложение для Mac без накладных расходов Electron. Создан с использованием SwiftUI и AppKit, разработан для macOS 26 Liquid Glass. Открывается мгновенно, не мешает работе. Архитектура: MVVM с представлениями SwiftUI, поддерживаемыми AppKit через NSViewRepresentable. Ядро редактора использует нативный стек NSTextStorage/NSLayoutManager/NSTextContainer. Подсветка синтаксиса выполняется асинхронно в фоновой очереди с токенами генерации для предотвращения появления устаревших результатов. Операции Git выполняются параллельно через GCD. Поиск по проекту использует параллелизм Swift с использованием скользящего окна. Pine на GitHub: https://github.com/batonogov/pine Платформа: macOS/iOS ⭐️: 13 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Книга: «System Design. Проектирование мобильных систем. Подготовка к сложному интервью» Практическое руководство MSD превраща
Книга: «System Design. Проектирование мобильных систем. Подготовка к сложному интервью» Практическое руководство MSD превращает сложные собеседования в предсказуемый процесс. Вы получаете 5-шаговую схему эффективного прохождения интервью и разбор 7 реальных кейсов (лента новостей, мессенджер, YouTube, Google Drive, трейдинговая платформа и др.), позволяющих проектировать архитектуру клиента, API, офлайн-режим, кэширование и масштабируемость. Здесь вы найдете готовые шаблоны, trade-off’ы и шпаргалки — всё, чтобы уверенно проходить интервью в топ-компаниях и расти от мидла до стафф+. Статья: https://habr.com/ru/companies/piter/articles/1039648/ Платформа: разработка 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

📺 Видео и подкасты за неделю • (iOS En) Customizing Native Tab Bar With FAB Buttons • (iOS En) Manage Complex SwiftUI List U
📺 Видео и подкасты за неделю(iOS En) Customizing Native Tab Bar With FAB Buttons(iOS En) Manage Complex SwiftUI List Updates without Breaking your Data Flow(iOS En) SwiftUI Shape Morphing View(And En) Connect to the intelligence system(And En) Introducing Android Performance Analyzer - The Next Evolution in Profiling for Android(And En) Develop faster with AI in Android Studio(And En) Build intelligent Android apps with Google's AI(And En) Adaptive development for the expanding Android ecosystem(And En) Google I/O 2026 Recap with Logan Kilpatrick, Josh Woodward and Tulsee Doshi(And En) Bring the power of on-device AI to life with Google AI Edge and Gemma(And En) Kotlin CLI, Kotlin 2.4, KMP Changes & More - KotlinConf 2026 News Special(And En) These Android News Are INSANE - Google IO 2026 Special(And En) Everything you need to know about Styles API in Jetpack Compose(Dev Ru) Zed – редактор кода на Rust | AI агент, CRDT, GPUI(Mrk Ru) Где покупать установки мобильного приложения, когда основные каналы исчерпаны Прошлогодние видео: • (iOS Ru) Ускоряем приложение эффективно(iOS Ru) Swift Concurrency в iOS SDK Яндекс Доставки(iOS Ru) Как мы доверили качество наших приложений AI(iOS Ru) Мок-собеседование iOS-разработчика. SwiftUI (+ все собеседования) • (iOS Ru) Макросы Swift: проще, чище, быстрее(And Ru) История одного бизнес-желания(And Ru) Наглядный пример, когда не следовать best practices for coroutines от Google(And Ru) Кто является Senior разработчиком?(And Ru) Мы решили все проблемы работы в модульном проекте. Хотите так же?(And Ru) Оптимизация Compose: проблемы, опыт, тактика, стратегия 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

KeepLiveService - 35+ стратегий работы сервиса в фоне KeepLiveService - самая полная библиотека способов поддержания сервиса
KeepLiveService - 35+ стратегий работы сервиса в фоне KeepLiveService - самая полная библиотека способов поддержания сервиса Android в рабочем состоянии. Она реализует все известные стратегии keep-alive - более 35 стратегий фоновых служб, нативный демон на C++, унифицированные внешние стратегии запуска Активити, поддержка Android 7.0–16, совместимость с более чем 10 версиями прошивок от разных производителей. KeepLiveService на GitHub: https://github.com/Pangu-Immortal/KeepLiveService Платформа: Android ⭐️: 211 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

SmartTube - нативный клиент YouTube на Swift/SwiftUI SmartTube - нативный клиент YouTube на Swift/SwiftUI для iPhone, iPad, m
SmartTube - нативный клиент YouTube на Swift/SwiftUI SmartTube - нативный клиент YouTube на Swift/SwiftUI для iPhone, iPad, macOS и Apple TV. Никакой рекламы. Автоматический пропуск спонсорских объявлений. Заголовки сообщества DeArrow. Вход через Google. До 8K. SmartTube на GitHub: https://github.com/milika/SmartTubeIOS Платформа: iOS ⭐️: 131 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность