AppFiles - Mobile Development
前往频道在 Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
显示更多2 167
订阅者
+224 小时
+17 天
+1630 天
帖子存档
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: код, инструменты, практики, производительностьОбертки свойств в Swift: сокращаем шаблонный код
Раньше я везде копировал и вставлял один и тот же код валидации.
Каждый раз, когда мне нужно было ограничить значение от 0 до 100, я писал один и тот же геттер и сеттер. Каждый раз, когда я хотел сохранить что-то в UserDefaults, — один и тот же шаблонный код. Каждый раз, когда мне нужен был потокобезопасный доступ, — одна и та же процедура блокировки/разблокировки.
Затем я открыл для себя обертки свойств и почувствовал себя по-настоящему глупым, что не изучил их раньше.
Обертки свойств позволяют вынести эту повторяющуюся логику свойств в многоразовый компонент. Напишите один раз, используйте везде. Синтаксис чистый, цель понятна, и ваш код значительно сокращается.
SwiftUI использует их повсюду.
@State, @Binding, @Published, @Environment. Вы все это время использовали обертки свойств. Но вот в чем дело: вы можете создать свои собственные. И как только вы это научитесь это делать, вы будете удивляться, как вы вообще жили без них.
Статья: https://apptractor.ru/info/articles/swift-property-wrappers.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьDefer в Swift: уберитесь перед уходом
Возможно, вы считаете ключевое слово
defer одной из самых неоднозначных особенностей языка Swift, но в некоторых случаях оно очень полезно. Его можно использовать целенаправленно, и это обеспечит вам безопасность. На этой неделе мы поговорим о некоторых лучших практиках использования defer в Swift.
Ключевое слово defer в Swift позволяет выполнить блок кода в конце текущего скоупа. Что означает текущий скоуп (область видимости)? Обычно это ближайшая пара фигурных скобок. Давайте рассмотрим несколько примеров.
Статья: https://apptractor.ru/info/articles/defer.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность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 превращает сложные собеседования в предсказуемый процесс. Вы получаете 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 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 - самая полная библиотека способов поддержания сервиса 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, macOS и Apple TV. Никакой рекламы. Автоматический пропуск спонсорских объявлений. Заголовки сообщества DeArrow. Вход через Google. До 8K.
SmartTube на GitHub: https://github.com/milika/SmartTubeIOS
Платформа: iOS
⭐️: 131
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Gradle под капотом: как перестать страдать и заставить сборку летать
Gradle дает нам единый источник правды, повторяемые сборки и масштабируемость: от пет-проекта до огромных многомодульных монорепозиториев. Давайте разберем его по косточкам, чтобы настройка билдов больше не была болью.
Статья: https://habr.com/ru/articles/1038946/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
ReduxKotlin - реализация Redux для Kotlin
ReduxKotlin - контейнер предсказуемого состояния для приложений Kotlin. Миссия проекта: Предоставить стандартную реализацию Redux для Kotlin.
Фичи:
• Многоплатформенность. ReduxKotlin разработан с учетом приоритета многоплатформенности. Поддерживает все платформы, на которые ориентирован Kotlin (JVM, нативные приложения, JS, WASM), что позволяет совместно использовать код.
• Предсказуемость. Redux помогает писать приложения, которые ведут себя согласованно и легко тестируются.
• Централизация. Централизация состояния и логики вашего приложения позволяет легко обмениваться состоянием между компонентами и событиями жизненного цикла.
• Портирование Redux для JavaScript. ReduxKotlin имеет тот же API, что и Redux для JavaScript. Если вы работаете с JavaScript или взаимодействуете с разработчиками JavaScript, использующими Redux, вы почувствуете себя как дома.
ReduxKotlin на GitHub: https://github.com/reduxkotlin/redux-kotlin
Платформа: Android
⭐️: 499
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
ReduxKotlin - реализация Redux для Kotlin
ReduxKotlin - контейнер предсказуемого состояния для приложений Kotlin. Миссия проекта: Предоставить стандартную реализацию Redux для Kotlin.
Фичи:
• Многоплатформенность. ReduxKotlin разработан с учетом приоритета многоплатформенности. Поддерживает все платформы, на которые ориентирован Kotlin (JVM, нативные приложения, JS, WASM), что позволяет совместно использовать код.
• Предсказуемость. Redux помогает писать приложения, которые ведут себя согласованно и легко тестируются.
• Централизация. Централизация состояния и логики вашего приложения позволяет легко обмениваться состоянием между компонентами и событиями жизненного цикла.
• Портирование Redux для JavaScript. ReduxKotlin имеет тот же API, что и Redux для JavaScript. Если вы работаете с JavaScript или взаимодействуете с разработчиками JavaScript, использующими Redux, вы почувствуете себя как дома.
ReduxKotlin на GitHub: https://github.com/reduxkotlin/redux-kotlin
Платформа: Android
⭐️: 499
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Прекращаем использовать .onAppear для API-вызовов: осваиваем .task и конечный автомат
Когда я наконец-то углубился в оптимизацию производительности и начал изучать, как настоящие опытные инженеры проектируют свои сетевые уровни, это стало для меня настоящим откровением. Я понял, что
.onAppear — это не сетевой инструмент, а событие жизненного цикла пользовательского интерфейса. Использование его для получения данных приводило к гонкам, утечкам памяти и невозможным состояниям интерфейса.
Это осознание изменило для меня всё. Оно высветило ту самую грань, которая отделяет хорошего разработчика от отличного:
Начинающий разработчик пишет работающий код. Опытный разработчик пишет код, который безопасно масштабируется и уважает системные ресурсы.Если вы всё ещё помещаете вызовы API внутрь
.onAppear, пора обновить архитектуру. Вот предельно честная правда о том, почему это ломает ваше приложение изнутри, и как это исправить с помощью .task и машины состояний.
Статья: https://apptractor.ru/info/articles/prekraschaem-ispolzovat-onappear-dlya-api-vyzovov-osvaivaem-task-i-konechnyy-avtomat.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьMarkdownDisplayView - представление для отображения Markdown с поддержкой стриминга
MarkdownDisplayView - мощный компонент рендеринга Markdown для iOS, созданный на основе TextKit 2, обеспечивает плавную работу рендеринга и широкие возможности настройки. Он также позволяет осуществлять потоковый рендеринг Markdown формата в сценариях чатов с использованием ИИ (как в приложениях ChatGPT или Claude).
Фичи:
• Высокопроизводительный рендеринг — на основе TextKit 2, поддерживает асинхронный рендеринг, инкрементальные обновления, потоковый рендеринг и т. д. Мгновенная загрузка со сверхбыстрым рендерингом первого экрана.
• Низкое использование ЦП — потоковый режим поддерживает рендеринг вложенных стилей с пиковой загрузкой ЦП < 56% на симуляторе iPhone 17 Pro, в среднем всего 30%.
• Полная поддержка Markdown — формулы протокола LaTeX, заголовки, списки, таблицы, блоки кода (с горизонтальной прокруткой), цитаты, изображения и многое другое.
• Подсветка синтаксиса — поддерживает подсветку синтаксиса для более чем 20 языков программирования (Swift, Python, JavaScript и др.).
• Автоматическое оглавление — автоматически извлекает заголовки для создания интерактивного оглавления.
• Широкие возможности настройки — Комплексная конфигурация шрифтов, цветов, отступов и т. д.
• Пользовательские расширения — Поддержка пользовательского анализа синтаксиса и рендеринга блоков кода (например, диаграмм Mermaid).
• Колбеки событий — Нажатия на ссылки, нажатия на изображения, навигация по оглавлению.
• Нативная iOS-версия — Создано с использованием UIKit и TextKit 2 для превосходной производительности.
• Темный режим — Встроенные настройки светлой и темной тем.
• Тактильная обратная связь — Поддержка синхронизированной тактильной обратной связи во время потоковой передачи для улучшения взаимодействия.
MarkdownDisplayView на GitHub: https://github.com/zjc19891106/MarkdownDisplayView
Платформа: iOS
⭐️: 174
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
