AppFiles - Mobile Development
Open in Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Show more2 167
Subscribers
-124 hours
-27 days
-430 days
Data loading in progress...
Similar Channels
Tags Cloud
Incoming and Outgoing Mentions
---
---
---
---
---
---
Attracting Subscribers
September '26
September '26
+11
in 0 channels
August '26
+24
in 1 channels
Get PRO
July '26
+39
in 1 channels
Get PRO
June '26
+31
in 1 channels
Get PRO
May '26
+42
in 1 channels
Get PRO
April '26
+26
in 1 channels
Get PRO
March '26
+35
in 1 channels
Get PRO
February '26
+23
in 1 channels
Get PRO
January '26
+45
in 2 channels
Get PRO
December '25
+43
in 3 channels
Get PRO
November '25
+46
in 1 channels
Get PRO
October '25
+132
in 1 channels
Get PRO
September '25
+38
in 1 channels
Get PRO
August '25
+40
in 1 channels
Get PRO
July '25
+31
in 1 channels
Get PRO
June '25
+33
in 1 channels
Get PRO
May '25
+41
in 1 channels
Get PRO
April '25
+54
in 2 channels
Get PRO
March '25
+162
in 1 channels
Get PRO
February '25
+42
in 1 channels
Get PRO
January '25
+40
in 1 channels
Get PRO
December '24
+50
in 1 channels
Get PRO
November '24
+65
in 1 channels
Get PRO
October '24
+52
in 1 channels
Get PRO
September '24
+48
in 1 channels
Get PRO
August '24
+81
in 2 channels
Get PRO
July '24
+48
in 1 channels
Get PRO
June '24
+41
in 1 channels
Get PRO
May '24
+29
in 1 channels
Get PRO
April '24
+18
in 1 channels
Get PRO
March '24
+26
in 2 channels
Get PRO
February '24
+25
in 1 channels
Get PRO
January '24
+36
in 1 channels
Get PRO
December '23
+49
in 2 channels
Get PRO
November '23
+20
in 2 channels
Get PRO
October '23
+35
in 2 channels
Get PRO
September '23
+25
in 0 channels
Get PRO
August '23
+16
in 0 channels
Get PRO
July '23
+16
in 0 channels
Get PRO
June '23
+27
in 0 channels
Get PRO
May '23
+99
in 0 channels
Get PRO
April '23
+34
in 0 channels
Get PRO
March '23
+28
in 0 channels
Get PRO
February '23
+62
in 0 channels
Get PRO
January '23
+31
in 0 channels
Get PRO
December '22
+21
in 0 channels
Get PRO
November '22
+13
in 0 channels
Get PRO
October '22
+25
in 0 channels
Get PRO
September '22
+11
in 0 channels
Get PRO
August '22
+9
in 0 channels
Get PRO
July '22
+16
in 0 channels
Get PRO
June '22
+23
in 0 channels
Get PRO
May '22
+38
in 0 channels
Get PRO
April '22
+65
in 0 channels
Get PRO
March '22
+29
in 0 channels
Get PRO
February '22
+48
in 0 channels
Get PRO
January '22
+60
in 0 channels
Get PRO
December '21
+26
in 0 channels
Get PRO
November '21
+26
in 0 channels
Get PRO
October '21
+19
in 0 channels
Get PRO
September '21
+27
in 0 channels
Get PRO
August '21
+35
in 0 channels
Get PRO
July '21
+22
in 0 channels
Get PRO
June '21
+20
in 0 channels
Get PRO
May '21
+11
in 0 channels
Get PRO
April '21
+46
in 0 channels
Get PRO
March '21
+34
in 0 channels
Get PRO
February '21
+44
in 0 channels
Get PRO
January '21
+32
in 0 channels
Get PRO
December '20
+1 148
in 0 channels
| Date | Subscriber Growth | Mentions | Channels | |
| 16 September | 0 | |||
| 15 September | 0 | |||
| 14 September | 0 | |||
| 13 September | 0 | |||
| 12 September | +2 | |||
| 11 September | +1 | |||
| 10 September | +1 | |||
| 09 September | +1 | |||
| 08 September | +2 | |||
| 07 September | +1 | |||
| 06 September | 0 | |||
| 05 September | 0 | |||
| 04 September | +2 | |||
| 03 September | 0 | |||
| 02 September | +1 | |||
| 01 September | 0 |
Channel Posts
Учим Siri говорить о вашем любимом приложении: пример Walk Mate
В посте на прошлой неделе я рассказал, как Walk Mate начал передавать избранные маршруты в Spotlight. Добавляете маршрут в избранное и задаёте ему название. Ищете в Spotlight, нажимаете — маршрут открывается на карте. Для этого использовались App Intents без особых изысков: IndexedEntity для избранного маршрута, OpenIntent для его загрузки и небольшой маршрутизатор, чтобы нажатие в Spotlight попадало в тот же редьюсер, что и нажатие внутри приложения. Фраз для Siri тогда ещё не было.
Spotlight уже знает, что прогулка существует. Теперь Siri в iOS 27 должна уметь говорить о ней.
В прошлый раз Spotlight мог находить избранный маршрут. Теперь я делаю так, чтобы Siri могла говорить о нём, передавать его в Карты и открывать голосом.
Статья: https://apptractor.ru/info/articles/uchim-siri-govorit-o-vashem-lyubimom-prilozhenii-primer-walk-mate.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
| 2 | Appstore PPP Prices - цены встроенных покупок по покупательной способности
Appstore PPP Prices — бесплатная утилита с открытым исходным кодом, которая приносит PPP-цены (паритет покупательной способности, ППС) в App Store. Она массово обновляет цены встроенных покупок и подписок сразу в 175+ странах: берёт коэффициенты из ВВП на душу населения, при желании подстраивает их через GPT под тип вашего приложения и записывает цены напрямую через App Store Connect API. Одна команда вместо вечера кликов по территориям.
Фичи:
• Лёгкая установка — одна строка на macOS, Windows или Linux. Свой Python не нужен.
• Дружелюбно для ИИ-агентов — Claude Code, Codex или Cursor поставят, настроят и запустят всё за вас.
• Безопасно по умолчанию — --dry-run печатает все 174 цены до того, как применится хоть одна.
• Ключ API не покидает вашу машину — ни аккаунта, ни загрузки, ни посредника.
• 175+ территорий одной командой — и встроенные покупки, и подписки.
• Реальные ценовые точки Apple — каждая цена в местной валюте и принимается App Store Connect.
• Бесплатно и с открытым кодом (MIT) — подписка на утилиту для подписок не нужна.
Appstore PPP Prices на GitHub: https://github.com/duceum/appstore-ppp-pricing-agent-skill
Платформа: iOS
⭐️: 46
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 130 |
| 3 | Norch - скрипт, который прячет чёлку MacBook
Репозиторий нашего читателя:
Я долгое время пользовался бесплатным приложением TopNotch, которое прячет чёлку на MacBook. После обновления на macOS 27 оно перестало работать. Автор обещал исправление, но через пару недель, а ждать не хотелось. Поэтому я вместе с Claude написал простой бесплатный скрипт на Swift, который делает то же самое.
Работает так: даёшь ему картинку для обоев, а он добавляет сверху чёрную полосу под строкой меню и скругляет углы. Так решаются сразу две проблемы: чёлку не видно, и обои не выглядывают из-за углов окон, развёрнутых на весь экран. Размеры и радиус скругления скрипт берёт из системы, настраивать ничего не нужно, и в фоне ничего не висит.
Norch на GitHub: https://github.com/mezhevikin/norch
Платформа: iOS
⭐️: 4
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 145 |
| 4 | Нативная разработка снова стала будущим мобильных приложений в Shopify
Мы не держимся за решение только потому, что когда-то оно было успешным. Когда меняется одна из ключевых предпосылок, мы готовы вернуться назад и спросить себя, остаётся ли это решение правильным. LLM изменили одну из основных предпосылок, лежавших в основе нашего решения 2020 года, поэтому мы заново оценили наш мобильный стек, начиная с фундаментальных принципов.
То, что мы обнаружили, привело нас обратно к нативной разработке.
Статья: https://apptractor.ru/info/articles/nativnaya-razrabotka-snova-stala-buduschim-mobilnyh-prilozheniy-v-shopify.html
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 149 |
| 5 | Compose Recomposition Highlighter - тепловая карта рекомпозиций
Compose Recomposition Highlighter — это инструмент для разработчиков, не создающий дополнительной нагрузки на систему и позволяющий разработчикам и QA-инженерам визуально выявлять избыточные рекомпозиции, нестабильные параметры и бесконечные циклы рендеринга непосредственно на физических устройствах в виде тепловых карт, без привязки к Layout Inspector в Android Studio.
Compose Recomposition Highlighter на GitHub: https://github.com/zakayothuku/compose-recomposition-highlighter
Платформа: Android
⭐️: 15
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 226 |
| 6 | Рекомпозиции, которых не было
Недавно я глубоко погрузился в профилирование, пытаясь понять, почему один экран Compose в продакшене ощущался тяжелее, чем должен. То, что начиналось как обычная проверка производительности, быстро превратилось во что-то большее: Layout Inspector и Memory Profiler показывали совершенно разные картины происходящего. Вот что я обнаружил, что исправил и что хотел бы знать раньше.
Статья: https://apptractor.ru/info/articles/rekompozitsii-kotoryh-ne-bylo.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 420 |
| 7 | Как я перестал платить за macOS-минуты: перенос iOS-сборки с GitHub Actions на Xcode Cloud, с цифрами
Есть один факт про GitHub Actions, который многие мобильные разработчики узнают только из счёта: одна минута на macOS-раннере стоит десять минут на Linux. Не в деньгах — в «бесплатных» минутах, которые входят в тарифный план. Ваш пятиминутный iOS-архив съедает из квоты столько же, сколько пятьдесят минут Linux-тестов. И пока Android-джоба тратит 6 минут квоты, её соседка по воркфлоу тратит 45.
Ниже — история одного переезда: как я вынес iOS-деплой из GitHub Actions в Xcode Cloud, что при этом сломалось (семь раз), что измерил и почему теперь iOS-релиз стоит мне ноль минут GitHub Actions и 6 минут оплачиваемого compute-времени Apple при 25 бесплатных часах в месяц.
Статья: https://habr.com/ru/articles/1076692/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 398 |
| 8 | Lucide Swift - типобезопасные Lucide иконки с векторным рендерингом
Lucide Swift - библиотека для использования иконок Lucide с поддержкой векторной графики и типобезопасностью, нативная для SwiftUI. Более 2112 иконок (1738 обычных + 374 экспериментальных Lab), отображаемых как настоящие векторные фигуры из данных SVG-путей, без каких-либо зависимостей в рантайме.
Фичи:
• Настоящий векторный рендеринг: SVG-пути преобразуются в нативные SwiftUI Shape, поэтому иконки можно масштабировать до любого размера без пикселизации.
• Типобезопасный API: 1 738+/1 792 enum-вариантов с полной поддержкой автодополнения Xcode. Проверка на этапе компиляции предотвращает ошибки вида «иконка не найдена» во время выполнения.
• Поддержка Lucide Lab: полная интеграция 374+ экспериментальных иконок из репозитория Lucide Lab.
• Ноль зависимостей: чистая реализация на Swift без внешних runtime-зависимостей — только Swift и SwiftUI.
• Нативная интеграция со SwiftUI: библиотека построена на протоколе SwiftUI Shape и поддерживает стандартные модификаторы, включая .stroke(), .fill(), .frame() и другие.
• Поддержка нескольких платформ: iOS 14+, macOS 11+, tvOS 14+, watchOS 7+, visionOS 1+.
• Настраиваемая толщина линии: толщину обводки можно задавать через параметр strokeWidth.
• Абсолютная толщина линии: absoluteStrokeWidth позволяет сохранять одинаковую толщину обводки независимо от размера иконки.
• Интеграция с Label: нативная поддержка SwiftUI Label для меню, панелей инструментов и кнопок.
• Высокая производительность: поиск иконки через enum примерно в 7 раз быстрее подходов на основе Bundle, а рендеринг через Shape — примерно в 2 раза быстрее растеризации PDF.
Lucide Swift на GitHub: https://github.com/ajaxjiang96/lucide-swift
Платформа: iOS
⭐️: 38
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 319 |
| 9 | Arkive - плагин Gradle для генерации веб-каталога экранов
Arkive превращает ваши первью Compose и XML-представлений в просматриваемый каталог экранов вашего приложения — запись производится на JVM с помощью Roborazzi (или, при желании, Paparazzi), без использования устройств или эмуляторов, без написания тестового кода.
Arkive на GitHub: https://github.com/infinum/arkive
Платформа: Android
⭐️: 17
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 288 |
| 10 | Разработка на Авроре под Аврору: разворачиваем Coder в облаке и пишем плагин для VS Code
Среди веб-решений (GigaIDE, GitLab Web IDE и другие) мне больше всего нравится code-server (coder) — полноценная веб-версия Visual Studio Code, которая поддерживает большинство привычных плагинов. В статье я подробно расскажу, как развернуть облачную среду разработки, привязать ее к планшету и написать собственный плагин для автоматизации сборки под «Аврору ОС».
Статья: https://habr.com/ru/companies/selectel/articles/1074074/
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 401 |
| 11 | Как я написал круговой лаунчер на Jetpack Compose: тригонометрия свайпов и системные грабли
Большинство лаунчеров для Android повторяют одну и ту же концепцию сетки иконок. Чтобы открыть приложение, нужно листать бесконечные рабочие столы и тянуться пальцем до нужной иконки (а она может быть и в верхнем углу экрана, поэтому часто приходится использовать вторую руку).
Я решил сделать SwipeLauncher — открытый лаунчер с круговыми меню, где любое действие или вложенное меню открывается одним свайпом из любой точки экрана.
Статья: https://habr.com/ru/articles/1075198/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 334 |
| 12 | 📺 Видео и подкасты за неделю
• (iOS En) AI-Assisted TDD in Practice (Swift + AI)
• (iOS En) Vibe Coding a macOS App in Xcode 27
• (iOS En) Apple Music Reactions Emoji Picker
• (And Ru) AI-агент Android-разработчика: как вынести его на сервер и выполнять задачи 24/7
• (And En) Beginner's Guide to Continuous Integration (CI) for Android with GitHub Actions
• (And En) Is TDD the next big thing for agentic development on Android?
• (And En) Reflection is Evil
• (Crs En) Developing Music Creation Apps for Web, Desktop and Android
• (Crs En) Advanced Kotlin Native Integration
• (Dev Ru) «Чё ты такой серьёзный?» Как юмор помогает продуктовым командам
• (Dev Ru) Анастасия Терёхина. Гадание на собеседовании: можно ли за час «технички» предсказать работу на годы вперед
• (Dev En) Redefining Machine Learning with Kotlin A Device First Approach to AI
• (Dev En) Teaching Kotlin for the AI Era: Tips, Tools, and Practical Insights
• (Mtr Ru) «Считаем то, что важно» – практический гид по метрикам в продукте
Прошлогодние видео:
• (iOS Ru) Стратегия автотестирования для iOS приложений
• (iOS Ru) 5 вопросов для iOS разработчика
• (iOS Ru) Борьба с утечками памяти: от задачи до победы
• (And Ru) Google закрывает свободу на Android
• (And Ru) 5 уроков из опыта реализации pixel-perfect тестирования дизайн-системы в Android
• (And Ru) Gradle-сборка. Измеряем самое важное
• (And Ru) Шифруем файлы в Android
• (Crs Ru) Kotlin Multiplatform в большом проекте
• (Dev Ru) Как «думают» LLM: внутренняя механика языковых моделей
• (Dev Ru) Как AI научился рассуждать — Reinforcement learning, reasoning models
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 2 358 |
| 13 | Повышение качества Android-приложений: сокращение использования памяти и улучшение миграции на другие устройства
Google объявил о двух новых требованиях к качеству приложений в Google Play: ограничениях по использованию памяти и обязательном восстановлении авторизации при переносе приложения на новый Android-смартфон. Новые правила начнут реально влиять на публикацию приложений в 2027 году.
Статья: https://apptractor.ru/develop/povyshenie-kachestva-prilozheniy-sokraschenie-ispolzovaniya-pamyati-i-uluchshenie-migratsii-na-drugie-ustroystva.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 260 |
| 14 | SwiftUIBackportKit - обратная совместимость с современными SwiftUI API с поддержкой более старых версий iOS
Небольшой, не требующий зависимостей Swift-пакет для поддержки нескольких версий iOS в SwiftUI — без нарушения цепочек модификаторов, дублирования целых представлений или разброса проверок #available по всему коду. Подробнее об использовании библиотеки вы можете прочитать в статье.
SwiftUIBackportKit на GitHub: https://github.com/EmadBeyrami/SwiftUIBackportKit
Платформа: iOS
⭐️: 21
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 259 |
| 15 | Как создать сверхперсонализированный пейвол с помощью Apple Foundation Models
Chorus — приложение для определения птиц по голосу и отслеживания прогулок, которое я создаю для Shipaton 2026. Во время онбординга оно узнаёт, зачем пользователь вообще открыл приложение и что могло бы заставить его чаще выходить на прогулки. Приложение спрашивает о птице мечты, с кем человек обычно гуляет, когда он выходит на прогулку, что действительно могло бы мотивировать его чаще выходить из дома.
Эта статья — о том, что происходит дальше: как использовать локальный фреймворк Foundation Models от Apple, чтобы в момент предложения подписки вернуть пользователю его собственную мотивацию, прямо внутри удалённо конфигурируемого пейвола RevenueCat.
И самое приятное — это бесплатно.
Статья: https://apptractor.ru/marketing-monetization/engagement/kak-sozdat-sverhpersonalizirovannyy-peyvol-s-pomoschyu-apple-foundation-models.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 306 |
| 16 | Kwery - управление серверными данными для Android-приложения
Kwery — это библиотека для управления серверным состоянием в Android-приложении. По смыслу она очень похожа на TanStack Query/React Query, только для Kotlin/Android. Она не заменяет Retrofit, Ktor или OkHttp, а работает поверх них. Автор формулирует идею так: "Room хранит данные, которыми владеет приложение. Kwery управляет данными, которыми владеет сервер".
Kwery предлагает взять на себя значительную часть типовой логики между UI и сетевым клиентом. При этом сам HTTP-запрос всё равно делает Retrofit/Ktor/OkHttp. Kwery однако решает, когда его вызывать, нужно ли вообще вызывать, можно ли отдать уже имеющиеся данные и как показывать состояние запроса.
Основные вещи, которые она делает:
• Кэширует ответы сервера. Если экран повторно запрашивает те же данные, Kwery может вернуть существующий результат вместо нового HTTP-запроса.
• Дедупликация запросов. Если несколько экранов/компонентов одновременно запросили один ресурс, не обязательно делать несколько одинаковых запросов.
• Управляет состояниями loading/success/error.
• Делает retry при ошибках.
• Может обновлять данные в фоне.
• Управляет устареванием кэша.
• Поддерживает offline-сценарии, в том числе управляет записью данных без сети и затем синхронизацией при ее появлении.
• Может переиспользовать один результат между несколькими подписчиками.
• Использует корутины Kotlin + Flow.
• Есть интеграция с Compose.
Kwery на GitHub: https://github.com/dbjpanda/kwery
Платформа: Android
⭐️: 16
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 281 |
| 17 | Один код для многих платформ - вот что вам никто не расскажет о KMP
Привет, Kotlin-разработчики. Скажу честно. Когда я начал разрабатывать своё приложение для разделения расходов на Kotlin Multiplatform, я подумал: «Напиши один раз, запускай везде. Что может быть сложного?»
Оказалось, может быть очень сложно. Но и невероятно полезно.
Это не очередной туториал «как начать работу с KMP». Таких и без того полно. Это скорее статья, которую я сам хотел бы прочитать до начала работы: реальные проблемы, реальные ошибки и реальные решения. Всё основано на моём опыте создания ExpenseSplitter KMP — полноценного приложения для совместного учёта расходов, которое работает на Android, Desktop и Web из одной общей кодовой базы.
Вот как всё было на самом деле.
Статья: https://apptractor.ru/info/articles/odin-kod-dlya-mnogih-platform-vot-chto-vam-nikto-ne-rasskazhet-o-kmp.html
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 319 |
| 18 | Android CameraX: детекция лица в реалтайме для биометрии
Представим ситуацию: клиент хочет перевести большую сумму, используя мобильное приложение. Внутренние системы видят подозрительную активность и запрашивают проверку по селфи, человек наводит камеру на лицо — получает отказ. А все из-за того, что на бэкенде была получена размытая фотография потолка с кусочком лица пользователя, по которому никак не понять, действительно ли это владелец счета хочет провести операцию. Клиент звонит в поддержку, злится. Банк теряет доверие. Именно такие сценарии заставили нас серьезно заняться качеством записываемого фото.
Статья: https://habr.com/ru/companies/tbank/articles/900136/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 308 |
| 19 | Kadr - декларативное создание видео для платформ Apple
SwiftUI для видео. Компонуйте, трансформируйте и экспортируйте видео на Swift — так, как действительно хочется писать код. Kadr - cовременная декларативная библиотека на Swift для создания видеокомпозиций на платформах Apple. Видео собираются с помощью DSL на основе result builder, а асинхронная работа построена на async/await.
Поддерживаются многодорожечные временные шкалы, переходы, наложения, фильтры с анимацией по ключевым кадрам, собственные покадровые композиторы, привязанный ко времени звук с плавными перекрёстными переходами — всё это поверх AVFoundation и без сторонних зависимостей.
Kadr на GitHub: https://github.com/SteliyanH/kadr
Платформа: iOS
⭐️: 48
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 281 |
| 20 | Надежное выполнение фоновых задач в iOS: часть 1
Можно подумать, что если у вас в кармане лежит суперкомпьютер, то он уж точно должен уметь надёжно выполнять разные рутинные задачи в фоне, пока вы занимаетесь своими делами. Примерно так же, как cron в Unix-системах делает это ещё с 1970-х.
В первой статье этой серии из трёх частей я расскажу о начале своего пути с BGTaskScheduler — фреймворком Apple для запуска фоновых задач на iOS. А также о том, как методом проб, ошибок и наблюдений мне удалось добиться достаточно хорошей надёжности в моём приложении Calendar Copilot, которое я использую для синхронизации событий между календарями.
Сразу раскрою итог: BGTaskScheduler не настолько надёжен, как cron, но добиться достаточно стабильного расписания можно. Правда, есть важная оговорка — вам или вашим пользователям придётся открывать приложение хотя бы раз в неделю или две. Если этого не делать, iOS со временем начинает реже запускать фоновые задачи, а затем вообще прекращает это делать ради экономии батареи.
Статья: https://apptractor.ru/info/articles/nadezhnoe-vypolnenie-fonovyh-zadach-v-ios-chast-1.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 347 |
