AppFiles - Mobile Development
Відкрити в Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Показати більше2 178
Підписники
-124 години
Немає даних7 днів
+230 днів
Завантажуємо дані
Схожі канали
Хмара тегів
Вхідні та вихідні згадування
---
---
---
---
---
---
Залучення підписників
жовтень '26жовт '26
жовтень '26
+21
в 1 каналах
вересень '26
+22
в 1 каналах
Get PRO
серпень '26
+24
в 1 каналах
Get PRO
липень '26
+39
в 1 каналах
Get PRO
червень '26
+31
в 1 каналах
Get PRO
травень '26
+42
в 1 каналах
Get PRO
квітень '26
+26
в 1 каналах
Get PRO
березень '26
+35
в 1 каналах
Get PRO
лютий '26
+23
в 1 каналах
Get PRO
січень '26
+45
в 3 каналах
Get PRO
грудень '25
+43
в 3 каналах
Get PRO
листопад '25
+46
в 1 каналах
Get PRO
жовтень '25
+132
в 1 каналах
Get PRO
вересень '25
+38
в 1 каналах
Get PRO
серпень '25
+40
в 1 каналах
Get PRO
липень '25
+31
в 1 каналах
Get PRO
червень '25
+33
в 1 каналах
Get PRO
травень '25
+41
в 1 каналах
Get PRO
квітень '25
+54
в 2 каналах
Get PRO
березень '25
+162
в 1 каналах
Get PRO
лютий '25
+42
в 1 каналах
Get PRO
січень '25
+40
в 1 каналах
Get PRO
грудень '24
+50
в 1 каналах
Get PRO
листопад '24
+65
в 1 каналах
Get PRO
жовтень '24
+52
в 1 каналах
Get PRO
вересень '24
+48
в 1 каналах
Get PRO
серпень '24
+81
в 2 каналах
Get PRO
липень '24
+48
в 1 каналах
Get PRO
червень '24
+41
в 1 каналах
Get PRO
травень '24
+29
в 1 каналах
Get PRO
квітень '24
+18
в 1 каналах
Get PRO
березень '24
+26
в 2 каналах
Get PRO
лютий '24
+25
в 1 каналах
Get PRO
січень '24
+36
в 1 каналах
Get PRO
грудень '23
+49
в 2 каналах
Get PRO
листопад '23
+20
в 2 каналах
Get PRO
жовтень '23
+35
в 2 каналах
Get PRO
вересень '23
+25
в 0 каналах
Get PRO
серпень '23
+16
в 0 каналах
Get PRO
липень '23
+16
в 0 каналах
Get PRO
червень '23
+27
в 0 каналах
Get PRO
травень '23
+99
в 0 каналах
Get PRO
квітень '23
+34
в 0 каналах
Get PRO
березень '23
+28
в 0 каналах
Get PRO
лютий '23
+62
в 0 каналах
Get PRO
січень '23
+31
в 0 каналах
Get PRO
грудень '22
+21
в 0 каналах
Get PRO
листопад '22
+13
в 0 каналах
Get PRO
жовтень '22
+25
в 0 каналах
Get PRO
вересень '22
+11
в 0 каналах
Get PRO
серпень '22
+9
в 0 каналах
Get PRO
липень '22
+16
в 0 каналах
Get PRO
червень '22
+23
в 0 каналах
Get PRO
травень '22
+38
в 0 каналах
Get PRO
квітень '22
+65
в 0 каналах
Get PRO
березень '22
+29
в 0 каналах
Get PRO
лютий '22
+48
в 0 каналах
Get PRO
січень '22
+60
в 0 каналах
Get PRO
грудень '21
+26
в 0 каналах
Get PRO
листопад '21
+26
в 0 каналах
Get PRO
жовтень '21
+19
в 0 каналах
Get PRO
вересень '21
+27
в 0 каналах
Get PRO
серпень '21
+35
в 0 каналах
Get PRO
липень '21
+22
в 0 каналах
Get PRO
червень '21
+20
в 0 каналах
Get PRO
травень '21
+11
в 0 каналах
Get PRO
квітень '21
+46
в 0 каналах
Get PRO
березень '21
+34
в 0 каналах
Get PRO
лютий '21
+44
в 0 каналах
Get PRO
січень '21
+32
в 0 каналах
Get PRO
грудень '20
+1 148
в 0 каналах
| Дата | Залучення підписників | Згадування | Канали | |
| 26 жовтня | +3 | |||
| 25 жовтня | 0 | |||
| 24 жовтня | 0 | |||
| 23 жовтня | +2 | |||
| 22 жовтня | 0 | |||
| 21 жовтня | +1 | |||
| 20 жовтня | +1 | |||
| 19 жовтня | +1 | |||
| 18 жовтня | 0 | |||
| 17 жовтня | +1 | |||
| 16 жовтня | 0 | |||
| 15 жовтня | 0 | |||
| 14 жовтня | 0 | |||
| 13 жовтня | +1 | |||
| 12 жовтня | 0 | |||
| 11 жовтня | +1 | |||
| 10 жовтня | 0 | |||
| 09 жовтня | +2 | |||
| 08 жовтня | +1 | |||
| 07 жовтня | +2 | |||
| 06 жовтня | +2 | |||
| 05 жовтня | 0 | |||
| 04 жовтня | +2 | |||
| 03 жовтня | 0 | |||
| 02 жовтня | +1 | |||
| 01 жовтня | 0 |
Дописи каналу
Over The Air обновления Kotlin-кода для Android-приложений
Как мы сделали настоящие OTA-обновления для Kotlin-приложений: не только UI, но и бизнес-логика, функции и состояние — при этом основную тяжёлую работу выполняет сам рантайм Android.
Статья: https://apptractor.ru/info/articles/over-the-air-obnovleniya-kotlin-koda-dlya-android-prilozheniy.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
| 2 | ChaosBank — 131 переключаемый баг для тренировки мобильного тестирования
Оба проекта под MIT. По функциональности это небольшой необанк с брокером акций и крипты, примерно в духе Revolut и Robinhood. Сейчас в нём 131 именованный дефект, и к каждому есть короткое письменное упражнение.
Начинал я это как стенд для собственных экспериментов, но, возможно, он пригодится и как тренировочная площадка тем, кто только начинает в мобильной разработке или мобильном QA. Ниже — как всё устроено, как я бы стал этим пользоваться и пара вещей, в которых я пока не уверен.
Статья: https://habr.com/ru/articles/1098668/
Платформа: тестирование
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 195 |
| 3 | Прежде чем работать с AIDL: разбираемся, как устроен IDL
Расскажу в двух статьях о языке определения интерфейсов (Interface Definition Language, IDL) и платформенном механизме, который построен поверх этой идеи в Android — Android Interface Definition Language (AIDL).
Начну рассказ с IDL — что это за язык и какую задачу он решает. Здесь будет только теоретическая информация. Примеры кода, внутренности Android и важные технические детали будут во второй статье.
Статья: https://habr.com/ru/companies/vk/articles/1096294/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 180 |
| 4 | Вылечил лагающий телевизор Xiaomi за 10 минут: реклама, слежка и YouTube — без root и с откатом
На прошлой неделе на GitHub взлетел проект CleanYourTV: автор попросил ИИ-ассистента почистить телевизор родителей от рекламы и за четыре дня собрал 16 тысяч звёзд и статью в TechCrunch. Я открыл его списки — и не нашёл ни Яндекс ТВ, ни Салют ТВ, ни российских прошивок Xiaomi. Зато мой собственный Xiaomi на Android 9 лагал так, что меню открывалось через пару секунд после нажатия.
Я сделал ЧистыйТВ — скрипт для Windows, который по Wi-Fi находит телевизор, отключает рекламу и телеметрию по проверенным спискам, ставит YouTube без рекламы и откатывает всё одной командой. Ниже — что на самом деле крутится внутри «умного» телевизора, какие пакеты отключать нельзя ни в коем случае (некоторые превращают ТВ в кирпич до сброса) и на какие грабли я наступил при первом запуске.
Статья: https://habr.com/ru/articles/1097472/
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 174 |
| 5 | Tellyscope - очистка Android TV
Tellyscope - приложение очищает Android TV от лишних приложений, позволяет устанавливать программы, просматривать и передавать файлы. И всё это прямо со смартфона. Без root-прав и без компьютера.
Для работы Tellyscope необходим смартфон на базе Android 8.0 или новее, подключенный к той же сети Wi-Fi, что и телевизор, а также телевизор с активированными параметрами разработчика.
Tellyscope на GitHub: https://github.com/man15h/tellyscope
Платформа: Android
⭐️: 126
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 182 |
| 6 | Интеллектуальная собственность в мобильном приложении
Многие предприниматели стремятся разработать мобильное приложение для удобства доступа потребителей к его продукту/услуге, узнаваемости и, как следствие, для роста продаж.
Вместе с тем, не каждый предприниматель задумывается, что создаваемые результаты интеллектуальной деятельности (РИД): иконка, название приложения и/или его разделов, интерфейсы страниц (их композиционное, цветовое, шрифтовое решения), и конечно, функционал приложения — всё это потенциально можно превратить в интеллектуальную собственность. Как это сделать?
Прежде всего, любой РИД создается человеком — автором. В процессе создания приложения многие РИДы являются объектами авторского права.
Статья: https://habr.com/ru/articles/1097916/
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 253 |
| 7 | 📺 Видео и подкасты за неделю
• (iOS Ru) Metal без магии — когда GPU ускоряет, а не мешает
• (iOS Ru) Как легально опубликоваться вне App Store
• (iOS Ru) Как и зачем писать игровой движок на Swift
• (iOS En) Instagram's Swipeable Feed-to-Camera Interaction Using SwiftUI
• (iOS En) Your iPhone App Needs This Before Supporting iPhone Duo
• (And Ru) Явное лучше неявного, или Shift left в Android-сборке
• (And Ru) Как читать метрику памяти и искать прожорливые экраны
• (Dev Ru) Как подружить мобильное приложение с JS и прокачать свой SDUI
• (Dev Ru) Разделяй и властвуй: распил мобильного приложения на микросервисы
• (Dev Ru) Rust в мобильной разработке
• (Dev Ru) Насколько опасен ИИ для кибербезопасности
• (Dev En) How this skill helps me to understand AI code
• (Dev En) The Tech Market Changed. Here's How to Survive It.
• (Mrk Ru) Хэллоуин: ASO и монетизация мобильных игр
Прошлогодние видео:
• (And Ru) Как обеспечить стабильную работу SDK для миллионов устройств
• (Crs Ru) Что ждёт Kotlin Multiplatform разработчика на собесе? (все собеседования)
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 1 837 |
| 8 | HackiOS - запуск iOS на Linux
HackiOS загружает открытое ядро Apple XNU (xnu-8796.121.2, ядро iOS 16.5) на аппаратном обеспечении Android-смартфона и запускает поверх него неизменённое пользовательское пространство iOS 16.5: launchd → backboardd → SpringBoard → приложения. Это стало возможным благодаря собственному EFI-загрузчику, собственным заменам закрытых драйверов Apple, порту UEFI и Linux-драйверу Wi-Fi, работающему через слой совместимости.
Система работает в двух вариантах:
• POCO X5 Pro 5G (redwood, Snapdragon 778G) — ничего не прошивается: UEFI запускается через fastboot boot, вся система работает из оперативной памяти, а после перезагрузки телефон возвращается к Android;
• QEMU (virt, aarch64) — то же самое можно запустить на любом Linux-компьютере, телефон для этого не нужен.
Пока не работают сотовая связь, Bluetooth, зарядка под собственным ядром, запись видео и Live Photo, вход в Apple ID и содержимое App Store. Причина последних ограничений связана в том числе с отсутствием Secure Enclave и тем, что FairPlay daemon завершается.
Главное техническое ограничение сейчас — Metal для приложений. Работа уже идёт: 293 из 456 системных шейдеров удалось запустить на Adreno. Поэтому HackiOS уже выглядит как достаточно функциональная iOS-среда на Android-железе, но до полноценной замены обычного iPhone ей пока далеко.
HackiOS на GitHub: https://github.com/oosexgang/hackios-xnu-kernel
Платформа: iOS/Android
⭐️: 654
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 243 |
| 9 | Jetpack Compose 1.12: как я наконец отказался от «ненастоящих» градиентов
Я не могу сосчитать, сколько раз дизайнер присылал мне красивый мягкий градиент, а я отвечал тремя наложенными radialGradient, blur и молитвой. На эмуляторе всё выглядело отлично; на настоящем OLED-экране — блекло. Compose 1.12 решает обе проблемы.
Статья: https://apptractor.ru/info/articles/jetpack-compose-1-12-kak-ya-nakonets-otkazalsya-ot-nenastoyaschih-gradientov.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 271 |
| 10 | Прощай, project.pbxproj, здравствуй, JSON: крупнейшее изменение Xcode за 30 лет
Apple наконец заменила самый пугающий файл в каждом iOS-репозитории. Вот что изменилось, как перейти на новый формат и стоит ли это делать — с объяснениями для джунов, сеньоров и тимлидов.
Статья: https://apptractor.ru/info/articles/proschay-project-pbxproj-zdravstvuy-json-krupneyshee-izmenenie-xcode-za-30-let.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 259 |
| 11 | UIKit говорит, что интерфейс уже RTL. Почему тогда половина экрана осталась LTR?
Представьте: пользователь переключает язык приложения с английского на арабский. Интерфейс перестраивается, кнопки меняются местами, навигация переезжает на другую сторону. Вроде всё работает.
Но затем открываешь следующий экран и замечаешь, что стрелка Back смотрит не туда. Возвращаешься назад, открываешь форму, а текстовое поле ведёт себя странно при вводе латиницы. Ещё одно переключение языка, и часть интерфейса снова оказывается в LTR.
Статья: https://habr.com/ru/articles/1097336/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 261 |
| 12 | Sketchy - рисованные анимированные иллюстрации и empty states для Compose Multiplatform
Sketchy — это библиотека Kotlin Multiplatform с иллюстрациями в стиле набросков и линейной графики — тёплыми, «человечными» изображениями, которые хорошо подходят для онбординга и пустых состояний. Все они полностью рисуются через Canvas, изначально поддерживают анимацию и полностью настраиваются под тему вашего приложения. Библиотека работает на Android, iOS, desktop и web из одного source set commonMain.
Sketchy на GitHub: https://github.com/Ali0092/Sketchy
Платформа: Android/кроссплатформа
⭐️: 39
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 283 |
| 13 | Как Grab сократил ANR на 32% и улучшил время запуска на 35% благодаря R8
Grab — ведущий суперапп Юго-Восточной Азии, который предлагает доставку, транспортные и финансовые услуги миллионам пользователей в восьми странах через одно приложение. За 10 лет кодовая база выросла до более чем 10 млн строк кода и сотен сторонних библиотек, а сборка использовала гибридную связку Bazel и Gradle. В итоге команда столкнулась с тремя растущими проблемами: высоким уровнем ошибок Application Not Responding (ANR), постоянно увеличивающимся размером приложения и постепенно ухудшающимся временем запуска. Включив оптимизацию R8, доработав keep rules и внедрив Baseline Profiles и Startup Profiles, Grab снизил воспринимаемый пользователями уровень ANR на 32%, уменьшил размер загрузки приложения примерно на 30% и ускорил запуск на 35%.
Статья: https://apptractor.ru/info/articles/kak-grab-sokratil-anr-na-32-i-uluchshil-vremya-zapuska-na-35-blagodarya-r8.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 291 |
| 14 | SimulatorCamera - камера для iOS-симулятора
У iOS Simulator никогда не было настоящей камеры. AVCaptureDevice возвращает nil. Любое приложение, которое работает с камерой — сканеры QR-кодов, считыватели штрихкодов, захват документов, ML-конвейеры, AR-прототипы, видеозвонки, — либо подменяет работу камеры заглушкой, либо запускается только на физических устройствах, либо содержит ненадёжный запасной вариант вроде «использовать фото вместо камеры».
SimulatorCamera регистрирует виртуальную камеру на системном уровне macOS с помощью API Apple CMIOExtension. iOS Simulator в Xcode 16+ видит эту виртуальную камеру через стандартный AVFoundation. Ваш существующий код с AVCaptureSessionпросто работает. Никакой интеграции SDK. Никаких изменений в Info.plist. Никаких веток #if targetEnvironment(simulator).
Что вы получаете:
• Веб-камера Mac → iOS Simulator — существующее приложение получает кадры с частотой 30 FPS и разрешением 1280×720
• Видео как источник — можно использовать любой MP4 / MOV / HEVC, воспроизведение зацикливается без разрывов
• Статичное изображение как источник — выберите PNG / JPG, и оно станет видеопотоком камеры
• Генератор QR-кодов — программная генерация QR для тестирования сканеров
• Тестовый шаблон — встроенные цветные полосы / движущаяся полоса, всегда доступны
• CLI simcamctl — например, simcamctl set-source --qr "TOKEN" для CI и ИИ-агентов
• Никакого SDK — вашему iOS-приложению не нужно импортировать или линковать что-либо из этого проекта
• Физическое устройство не требуется — всё работает целиком внутри iOS Simulator
• Бесплатно, открытый исходный код, лицензия MIT — можно форкать, распространять, продавать, никаких отчислений
SimulatorCamera на GitHub: https://github.com/dautovri/SimulatorCamera
Платформа: iOS
⭐️: 59
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 284 |
| 15 | Производительность SwiftUI: как находить перерисовки в Xcode Instruments
Проблемы с производительностью SwiftUI часто сводятся к двум вещам: представления либо перерисовываются слишком часто, либо их body выполняется слишком долго. Прежде чем что-то исправлять, нужно понять, какие именно представления виноваты и что вызывает их обновление. Xcode Instruments способен показать это довольно точно — если знать, где смотреть.
В этой статье я покажу, как находить перерисовки SwiftUI и измерять их стоимость в Xcode Instruments. Мы запишем трассировку с шаблоном SwiftUI, изучим дорожку SwiftUI и представления View Body Updates, чтобы увидеть, какое представление сколько раз обновляется, сколько занимает каждое обновление и что именно его вызвало. Если вы раньше пользовались Self._printChanges(), то Instruments — следующий шаг, когда нужно понять, сколько эти перерисовки реально стоят.
Статья: https://apptractor.ru/info/articles/proizvoditelnost-swiftui-kak-nahodit-pererisovki-v-xcode-instruments.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 278 |
| 16 | Гравицапа для GPU: OpenGL ES на Kotlin DSL на примере 3D‑«Жизни» Конвея
Наконец‑то я закончил работу над новым большим блоком RedByteFX, тем самым, который в планах звучал скромно: «а ещё было бы неплохо OpenGL ES». «Неплохо» растянулось на много вечеров и вылилось в версию 1.2.0, которая уже лежит в Maven Central. Если коротко: теперь на Kotlin DSL можно писать не только эффекты для Compose, но и полноценную 3D‑графику и вычисления на GPU. Если подробно, то читайте дальше: я покажу всё на живом примере и сравню с тем, как пришлось бы писать без библиотеки.
Статья: https://habr.com/ru/articles/1095948/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 271 |
| 17 | Swift на Android: путь к сингулярности. От анонса SwiftJava до полноценного приложения
Сегодня мы с вами обсудим наработки от Apple. Какую технологию они представили еще в 2025 году, что изменилось со времени, как Apple выпустили официальный релиз Swift SDK для Android. А также мы посмотрим, как написать настоящее приложение, где вся бизнес-логика живёт на Swift, а UI на Compose.
Статья в двух частях: первая и вторая
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 273 |
| 18 | Mac.apk - запуск Android-приложений нативно на Apple Silicon
Mac.apk запускает Android-приложения непосредственно на Apple Silicon. Приложения стартуют как обычные процессы macOS, отрисовывают графику через GPU Mac и выполняются на CPU с нативной скоростью. Они появляются в Dock, получают собственные окна с кнопкой «Назад» рядом со стандартными кнопками управления окном, могут менять размер и ориентацию как обычные окна macOS и автоматически переключаются между светлой и тёмной темой вместе с Mac. Android TV-приложениями можно управлять с клавиатуры, а игровые лаунчеры способны запускать другие установленные приложения.
Здесь нет ни эмулятора, ни виртуальной машины. В фоне не загружается Android, под системой не работает ядро Linux, а инструкции не интерпретируются одна за другой. Mac.apk напрямую реализует среду выполнения Android-приложений поверх macOS.
Mac.apk на GitHub: https://github.com/kksimp/Mac.apk
Платформа: Android
⭐️: 901
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 290 |
| 19 | Как я проектирую SwiftUI-приложения с Swift Concurrency, чтобы компилятор не выдавал предупреждений
Структурирование SwiftUI-приложения для меня всегда сводилось к одним и тем же целям: хорошо организованный код, компоненты, каждый из которых выполняет одну задачу, и приложение, которое остаётся поддерживаемым по мере роста. Я хочу быстро находить нужные вещи, менять одну функцию, не ломая остальные, и использовать превью без зависимости от сервера.
Swift concurrency добавила ко всему этому ещё одну проблему, и довольно болезненную. Как только появляются сеть, кэширование или аутентификация, компилятор начинает жаловаться. Ошибки Sendable, ошибки изоляции main actor, предупреждения о гонках данных. Добавляешь где-нибудь @MainActor, и новая ошибка появляется уже в другом месте. В какой-то момент начинаешь задаваться вопросом: Swift concurrency вообще нормально работает со SwiftUI? И если да, то как нужно структурировать приложение, чтобы они не конфликтовали друг с другом?
Работает. В этой статье я покажу, как структурирую свои SwiftUI-приложения, чтобы они оставались организованными и удобными в поддержке, а SwiftUI и Swift concurrency работали вместе, а не друг против друга.
Статья: https://apptractor.ru/info/articles/kak-ya-proektiruyu-swiftui-prilozheniya-s-swift-concurrency.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 319 |
| 20 | Blueprint - генерация отладочных иконок
Blueprint - небольшая CLI-утилита для iOS/macOS-разработки, которая автоматически превращает обычную иконку приложения в blueprint-версию для Debug-сборок, примерно в стиле иконки Xcode. Главная идея: чтобы тестовую/отладочную сборку на устройстве было сразу видно и не перепутать с продакшеном.
Она умеет работать как с новыми файлами Icon Composer .icon, так и с обычными AppIcon.appiconset. На выходе она создаёт отдельную иконку вроде AppIconDebug.icon или AppIconDebug.appiconset, после чего её можно назначить для Debug-конфигурации через ASSETCATALOG_COMPILER_APPICON_NAME. Исходную иконку библиотека не перезаписывает.
Blueprint на GitHub: https://github.com/MustafaNatur/blueprint
Платформа: iOS
⭐️: 114
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 320 |
