es
Feedback
AppFiles - Mobile Development

AppFiles - Mobile Development

Ir al canal en Telegram

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

Mostrar más
2 173
Suscriptores
-224 horas
+17 días
-830 días
Atraer Suscriptores
agosto '26
agosto '26
+20
en 1 canales
julio '26
+39
en 1 canales
Get PRO
junio '26
+31
en 1 canales
Get PRO
mayo '26
+42
en 1 canales
Get PRO
abril '26
+26
en 1 canales
Get PRO
marzo '26
+35
en 1 canales
Get PRO
febrero '26
+23
en 1 canales
Get PRO
enero '26
+45
en 2 canales
Get PRO
diciembre '25
+43
en 3 canales
Get PRO
noviembre '25
+46
en 1 canales
Get PRO
octubre '25
+132
en 1 canales
Get PRO
septiembre '25
+38
en 1 canales
Get PRO
agosto '25
+40
en 1 canales
Get PRO
julio '25
+31
en 1 canales
Get PRO
junio '25
+33
en 1 canales
Get PRO
mayo '25
+41
en 1 canales
Get PRO
abril '25
+54
en 2 canales
Get PRO
marzo '25
+162
en 1 canales
Get PRO
febrero '25
+42
en 1 canales
Get PRO
enero '25
+40
en 1 canales
Get PRO
diciembre '24
+50
en 1 canales
Get PRO
noviembre '24
+65
en 1 canales
Get PRO
octubre '24
+52
en 1 canales
Get PRO
septiembre '24
+48
en 1 canales
Get PRO
agosto '24
+81
en 2 canales
Get PRO
julio '24
+48
en 1 canales
Get PRO
junio '24
+41
en 1 canales
Get PRO
mayo '24
+29
en 1 canales
Get PRO
abril '24
+18
en 1 canales
Get PRO
marzo '24
+26
en 2 canales
Get PRO
febrero '24
+25
en 1 canales
Get PRO
enero '24
+36
en 1 canales
Get PRO
diciembre '23
+49
en 2 canales
Get PRO
noviembre '23
+20
en 2 canales
Get PRO
octubre '23
+35
en 2 canales
Get PRO
septiembre '23
+25
en 0 canales
Get PRO
agosto '23
+16
en 0 canales
Get PRO
julio '23
+16
en 0 canales
Get PRO
junio '23
+27
en 0 canales
Get PRO
mayo '23
+99
en 0 canales
Get PRO
abril '23
+34
en 0 canales
Get PRO
marzo '23
+28
en 0 canales
Get PRO
febrero '23
+62
en 0 canales
Get PRO
enero '23
+31
en 0 canales
Get PRO
diciembre '22
+21
en 0 canales
Get PRO
noviembre '22
+13
en 0 canales
Get PRO
octubre '22
+25
en 0 canales
Get PRO
septiembre '22
+11
en 0 canales
Get PRO
agosto '22
+9
en 0 canales
Get PRO
julio '22
+16
en 0 canales
Get PRO
junio '22
+23
en 0 canales
Get PRO
mayo '22
+38
en 0 canales
Get PRO
abril '22
+65
en 0 canales
Get PRO
marzo '22
+29
en 0 canales
Get PRO
febrero '22
+48
en 0 canales
Get PRO
enero '22
+60
en 0 canales
Get PRO
diciembre '21
+26
en 0 canales
Get PRO
noviembre '21
+26
en 0 canales
Get PRO
octubre '21
+19
en 0 canales
Get PRO
septiembre '21
+27
en 0 canales
Get PRO
agosto '21
+35
en 0 canales
Get PRO
julio '21
+22
en 0 canales
Get PRO
junio '21
+20
en 0 canales
Get PRO
mayo '21
+11
en 0 canales
Get PRO
abril '21
+46
en 0 canales
Get PRO
marzo '21
+34
en 0 canales
Get PRO
febrero '21
+44
en 0 canales
Get PRO
enero '21
+32
en 0 canales
Get PRO
diciembre '20
+1 148
en 0 canales
Fecha
Crecimiento de Suscriptores
Menciones
Canales
26 agosto0
25 agosto+1
24 agosto+1
23 agosto0
22 agosto0
21 agosto+4
20 agosto+2
19 agosto0
18 agosto+1
17 agosto+1
16 agosto0
15 agosto0
14 agosto0
13 agosto0
12 agosto+2
11 agosto+1
10 agosto0
09 agosto0
08 agosto0
07 agosto+1
06 agosto+1
05 agosto0
04 agosto+3
03 agosto0
02 agosto+2
01 agosto0
Publicaciones del Canal
Один код для многих платформ - вот что вам никто не расскажет о KMP Привет, Kotlin-разработчики. Скажу честно. Когда я начал
Один код для многих платформ - вот что вам никто не расскажет о 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: код, инструменты, практики, производительность

2
Android CameraX: детекция лица в реалтайме для биометрии Представим ситуацию: клиент хочет перевести большую сумму, используя
Android CameraX: детекция лица в реалтайме для биометрии Представим ситуацию: клиент хочет перевести большую сумму, используя мобильное приложение. Внутренние системы видят подозрительную активность и запрашивают проверку по селфи, человек наводит камеру на лицо — получает отказ. А все из-за того, что на бэкенде была получена размытая фотография потолка с кусочком лица пользователя, по которому никак не понять, действительно ли это владелец счета хочет провести операцию. Клиент звонит в поддержку, злится. Банк теряет доверие. Именно такие сценарии заставили нас серьезно заняться качеством записываемого фото. Статья: https://habr.com/ru/companies/tbank/articles/900136/ Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
192
3
Kadr - декларативное создание видео для платформ Apple SwiftUI для видео. Компонуйте, трансформируйте и экспортируйте видео н
Kadr - декларативное создание видео для платформ Apple SwiftUI для видео. Компонуйте, трансформируйте и экспортируйте видео на Swift — так, как действительно хочется писать код. Kadr - cовременная декларативная библиотека на Swift для создания видеокомпозиций на платформах Apple. Видео собираются с помощью DSL на основе result builder, а асинхронная работа построена на async/await. Поддерживаются многодорожечные временные шкалы, переходы, наложения, фильтры с анимацией по ключевым кадрам, собственные покадровые композиторы, привязанный ко времени звук с плавными перекрёстными переходами — всё это поверх AVFoundation и без сторонних зависимостей. Kadr на GitHub: https://github.com/SteliyanH/kadr Платформа: iOS ⭐️: 48   👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
186
4
Надежное выполнение фоновых задач в iOS: часть 1 Можно подумать, что если у вас в кармане лежит суперкомпьютер, то он уж точн
Надежное выполнение фоновых задач в 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: код, инструменты, практики, производительность
243
5
Шпаргалка: Kotlin Coroutines Channels и Actor‑модель Пытаюсь лучше понять работу Kotlin Coroutines. Беру небольшую тему про Kotlin Coroutines и пытаюсь разобраться и написать шпаргалку (максимально кратко и лаконично). Сегодня поговорим про Каналы (Channel) и паттерн Actor. В предыдущих частях я писал, что обычные suspend‑функции возвращают результат только один раз. Но что делать, если у нас есть непрерывный поток данных, который асинхронно генерируется в одной корутине, а обрабатываться должен в другой (или даже в нескольких)? Нам нужна потокобезопасная «труба». В мире корутин этой трубой является Channel. Статья: https://habr.com/ru/articles/1071290/ Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
232
6
DroidGauge - Local-first регрессионное тестирование Android-приложений DroidGauge — это инструмент командной строки, ориентир
DroidGauge - Local-first регрессионное тестирование Android-приложений DroidGauge — это инструмент командной строки, ориентированный на локальную работу, для воспроизводимых измерений производительности приложений Android. Он не требует root-доступа, APK-файла на устройстве, облачных сервисов или внешних ресурсов для создания отчетов. Он выявляет регрессии производительности и энергопотребления Android локально с помощью одной команды adb и готового автономного отчета. Возможности: • Сбор показателей CPU, PSS-памяти, рывков при отрисовке кадров, батареи, температуры и сетевой активности отдельных приложений — если соответствующие данные доступны в используемой версии Android. • Устойчивый сбор данных: недоступные команды и поля отмечаются как отсутствующие метрики, а не приводят к прерыванию всего запуска. • Стабильный JSON-формат schema_version: 1 со средним значением, p50, p95, минимумом, максимумом и изменением от первого до последнего измерения. • Адаптивные HTML-отчёты в тёмной теме со встроенными SVG-графиками, без CDN, JavaScript, внешних шрифтов и дополнительных файлов. • A/B-сравнение с учётом направления изменения (improved, regressed, stable) и детерминированными выводами на основе правил. • Проверка в CI с кодом выхода 2 при обнаружении настроенных регрессий. • Не собираются логи, списки приложений, содержимое экрана или другие персональные данные. DroidGauge на GitHub: https://github.com/RuizheGu0/droidgauge Платформа: Android ⭐️: 4 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
225
7
Забавные анимации с меш-градиентами в Jetpack Compose 1.12 В Jetpack Compose всегда были интерфейсы для линейных и радиальных
Забавные анимации с меш-градиентами в Jetpack Compose 1.12 В Jetpack Compose всегда были интерфейсы для линейных и радиальных градиентов. Но если хотелось получить более сложное смешивание цветов, подходящего встроенного решения не было. Теперь оно появилось: в Jetpack Compose 1.12 представлен MeshGradientPainter. Статья: https://apptractor.ru/info/articles/zabavnye-animatsii-s-mesh-gradientami-v-jetpack-compose-1-12.html Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
270
8
MYCloudKit - синхронизация и и возможности обмена данными через CloudKit MYCloudKit — это фреймворк, разработанный для упроще
MYCloudKit - синхронизация и и возможности обмена данными через CloudKit MYCloudKit — это фреймворк, разработанный для упрощения и автоматизации операций синхронизации, удаления и получения данных из CloudKit для вашего приложения.  MYCloudKit на GitHub: https://github.com/mufasaYC/MYCloudKit Платформа: iOS ⭐️: 215   👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
253
9
⚡️⚡️Мобильные разработчики снова соберутся на Mobius этой осенью! 21–22 октября в Санкт-Петербурге и онлайне пройдет Mobius —
⚡️⚡️Мобильные разработчики снова соберутся на Mobius этой осенью! 21–22 октября в Санкт-Петербурге и онлайне пройдет Mobius — конференция JUG Ru Group для мобильных разработчиков. По традиции в фокусе — практические задачи, нативный и кроссплатформенный подходы, архитектура и реальный опыт продуктовых команд. ✨Программа уже активно формируется, делимся наиболее интересными докладами: 🔹Портирование Android-приложений под HarmonyOS NEXT. Спикер расскажет про автоматизированный перенос с сохранением архитектуры: от преобразования Kotlin-кода в ArkTS до трансляции Jetpack Compose в ArkUI. 🔹AI-driven T-shape. Разбор реального опыта команды о том, как искусственный интеллект помогает осваивать соседние платформы и бэкенд, ускоряя развитие инженеров и уменьшая time-to-market. 🔹Liquid Glass своими руками на Metal. Анатомия визуального эффекта из iOS 26 и его воссоздание для более старых версий с разбором интеграции в кодовую базу Telegram. 📣 Встречаемся 21–22 октября (Санкт-Петербург + online). Подробнее о программе и билетах — на сайте.
288
10
React Native в 2026 году: New Architecture, нативный код и AI в реальном проекте React Native по-прежнему часто описывают фор
React Native в 2026 году: New Architecture, нативный код и AI в реальном проекте React Native по-прежнему часто описывают формулой «один код для iOS и Android». В 2026 году она звучит слишком просто. Современное приложение на React Native — это общий продуктовый слой на TypeScript, нативный интерфейс, Hermes, Fabric, JSI, фоновые процессы, platform-specific код и довольно много решений о том, где именно должна выполняться каждая задача. Мы столкнулись с этим в Synchra.24 — мобильном приложении для линейных и распределённых команд. В проекте больше тысячи TS/TSX-файлов и свыше ста экранов, но рядом с ними живут Kotlin и Swift: геопозиция, push-уведомления, биометрия, системные виджеты и работа с медиа. Это не история о функциях нашего продукта и не попытка его рекламировать. Это разбор того, чем на практике стала разработка на React Native к 2026 году — и какую часть этой работы действительно можно поручить нейросетям. Статья: https://habr.com/ru/articles/1072522/ Платформа: кроссплатформа 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
303
11
📺 Видео и подкасты за неделю • (iOS En) SwiftUI in motion • (iOS En) AllTrails: Momentum without a rewrite • (iOS En) Flow d
📺 Видео и подкасты за неделю • (iOS En) SwiftUI in motion • (iOS En) AllTrails: Momentum without a rewrite • (iOS En) Flow data through SwiftUI • (iOS En) SwiftUI essentials • (iOS En) A guide to layout in SwiftUI • (iOS En) Design with SwiftUI • (iOS En) Reorderable Modifier | Multi-Item Reordering | Section Reordering | SwiftUI • (iOS En) Prominent Action Custom Tab Bar | SwiftUI • (iOS En) Device Hub Explained - What Every Apple Developer Should Know • (And Ru) Android Runtime под капотом • (And En) The Multi-Agent Code Review Workflow For My Production Android Apps • (And En) Vertical vs. Horizontal Slicing - The ONLY Right Way to Split Down Your App • (And En) A tale of the Gradle DSLs • (Crs En) SwiftPM support for Kotlin Multiplatform • (Crs En) All platforms are unique but some platforms are more unique than others • (Crs En) KMP at Scale in Kuaishou Super App for over 700M users • (Dev Ru) Выпрямляем руки агентов: как сделать MCP удобными и действительно полезными • (Dsg Ru) DesignOps: операционная система команды, которая работает на вас • (Dsg Ru) Дизайн для программиста: пробую Claude Design • (Dev En) Build a live translation broadcast app with the Gemini Live API and LiveKit • (Dev En) Go Get It, with Kotlin Lessons Learned Evolving Uber’s Java Backend Прошлогодние видео: • (Dev Ru) Генерация UI Kit с использованием ИИ • (Dev Ru) Надежность мобильных приложений: что это и как достичь • (Dev Ru) Задача на логику из собеседования в Amazon (+ все собеседования) 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
1 824
12
Boxlore - умный плеер подкастов для Android Большинство приложений для подкастов обращаются к открытому API, выполняют буквал
Boxlore - умный плеер подкастов для Android Большинство приложений для подкастов обращаются к открытому API, выполняют буквальный поиск по словам, показывают чарты Apple — и на этом всё. Ошибитесь в написании названия шоу — и ничего не найдёте. Попробуйте искать по теме — получите совпадения по заголовкам, которые вообще не отражают смысл запроса. А когда вы уже внутри приложения, главный экран редко ощущается как ваш: одинаковые подборки для всех и почти никакого обучения на основе того, что вы действительно слушаете. Boxlore создан именно вокруг этих двух проблем. Он помогает найти шоу даже при неточном написании названия или искать подкасты и отдельные эпизоды по смыслу, когда вы примерно знаете, что хотите, но не можете сформулировать точный запрос. А по мере прослушивания приложение становится персональнее: Home, Explore, очередь и загрузки переупорядочиваются прямо на устройстве с учётом ваших предпочтений. Появляются подборки по времени суток, Because You Like, персональные рекомендации For You, а также карточки для случайных открытий — когда хочется найти что-то такое, что вы сами никогда не стали бы искать. Данные о ваших предпочтениях остаются на телефоне. Можно слушать потоково или скачивать выпуски для офлайн-доступа, полноценно управлять очередью и обходиться без рекламы и платных ограничений там, где это действительно важно. Умный каталог охватывает популярные подкасты из чартов и ежедневно расширяется — пока в нём есть не абсолютно все шоу в мире. Но даже за пределами этого индекса Boxlore продолжает работать как обычный клиент для подкастов: можно подписываться, слушать, скачивать выпуски и импортировать OPML. Boxlore на GitHub: https://github.com/boxcreate/boxlore Платформа: Android ⭐️: 59 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
278
13
Как Tinder сократил холодные старты на 47%, благодаря R8 Configuration Analyzer Используя R8 Configuration Analyzer, Tinder с
Как Tinder сократил холодные старты на 47%, благодаря R8 Configuration Analyzer Используя R8 Configuration Analyzer, Tinder смог найти и удалить непреднамеренные блокировки оптимизации. Результаты оказались заметными сразу:  холодные запуски сократились на 47%, размер загружаемого приложения уменьшился на 28,98% — до 61,5 МБ, а число заметных пользователю ANR снизилось на 28%. Статья: https://apptractor.ru/info/articles/kak-tinder-sokratil-holodnye-starty-na-47-blagodarya-r8-configuration-analyzer.html Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
319
14
Подготовьте ваше приложение к более широким ограничениям объема памяти Отличный пользовательский опыт — одна из ключевых целе
Подготовьте ваше приложение к более широким ограничениям объема памяти Отличный пользовательский опыт — одна из ключевых целей Android, а для этого устройства должны оставаться быстрыми, отзывчивыми и надёжными. Именно поэтому оптимизация памяти становится важнее, чем когда-либо. На фоне роста цен на память новые устройства сохраняют прежний объём оперативной памяти или даже получают меньше, однако пользователи по-прежнему ожидают такой же плавной и производительной работы приложений. В Android 17 ввели ограничения памяти для отдельных приложений, начав с устройств Pixel. Их задача — защитить общую отзывчивость системы от приложений, которые потребляют слишком много памяти и вызывают замедление всего устройства. В течение следующего года всё больше производителей начнут использовать ограничения памяти Android для приложений на устройствах с объёмом ОЗУ от 4 ГБ до 16 ГБ и более. Если приложение превысит эти лимиты, система замедлит его работу, а затем может завершить процесс. Поэтому уменьшение объёма потребляемой приложением памяти становится критически важным: это помогает избежать ограничения производительности со стороны ОС и сохранить плавный пользовательский опыт. В этой статье разберём, как эти ограничения работают внутри системы, как измерять потребление памяти с помощью новых метрик Android vitals и какие конкретные действия помогут оптимизировать приложение или игру. Статья: https://apptractor.ru/info/articles/podgotovte-vashe-prilozhenie-k-bolee-shirokim-ogranicheniyam-obema-pamyati.html Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
331
15
Stitch - инъекция зависимостей для SwiftUI Stitch — это лёгкая библиотека внедрения зависимостей (DI), вдохновлённая SwiftUI
Stitch - инъекция зависимостей для SwiftUI Stitch — это лёгкая библиотека внедрения зависимостей (DI), вдохновлённая SwiftUI и обеспечивающая безопасность на этапе компиляции. Она позволяет описывать карту зависимостей без необходимости использовать инструменты генерации кода. Безопасность Stitch на этапе компиляции даёт уверенность в корректности настройки: если проект компилируется, значит зависимости сконфигурированы правильно. В отличие от типичных контейнеров зависимостей, здесь не возникает ошибок в рантайме из-за того, что какая-либо зависимость не была зарегистрирована. Для описания карты зависимостей Stitch использует новые макросы Swift 5.9+, что делает API более удобным, а для получения объектов из карты предоставляет соответствующие реализации @propertyWrapper. Stitch предлагает следующие ключевые возможности: 1. Интеграция в жизненный цикл SwiftUI и привычный для SwiftUI стиль работы — использовать Stitch можно так же, как другие оболочки свойств SwiftUI. 2. Внедрение зависимостей через протоколы внутри представлений SwiftUI. Библиотека расширяет возможности ObservableObject, позволяя работать с протокольными типами и при этом корректно обновлять представления. 3. Доступ к Combine-издателям для свойств протокольных типов без необходимости добавлять в протокол переменные вида Publisher<Object, Never> и вручную проксировать их в реализации. Stitch на GitHub: https://github.com/entrhq/stitch Платформа: iOS ⭐️: 19   👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
300
16
Senior инженеры замолчали, и вот почему это плохой знак Речь не о том, что у этих инженеров закончились мнения. Мнений у них
Senior инженеры замолчали, и вот почему это плохой знак Речь не о том, что у этих инженеров закончились мнения. Мнений у них по-прежнему хватает. Изменилось другое — куда эти мнения теперь направляются. Стало меньше замечаний на дизайн-ревью. Меньше возражений в архитектурных обсуждениях. Меньше тех моментов, когда человек с десятью годами производственного опыта говорит: подождите, я уже видел нечто подобное, и вот чем всё закончилось. Встречи по-прежнему проходят. Решения по-прежнему принимаются. Но один конкретный вид трения стал почти незаметным. А это трение выполняло важную функцию. Статья: https://apptractor.ru/info/articles/senior-inzhenery-zamolchali-i-vot-pochemu-eto-plohoy-znak.html Платформа: разработка 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
299
17
ZeroDroid - инструменты для анализа сетей, сигналов и безопасности ZeroDroid — открытое Android-приложение, которое превращае
ZeroDroid - инструменты для анализа сетей, сигналов и безопасности ZeroDroid — открытое Android-приложение, которое превращает смартфон в универсальный набор инструментов для анализа беспроводных сетей, радиосигналов, датчиков и безопасности. Проект объединяет 29 инструментов в пяти категориях: Wireless, RF & Signals, Sensors, Network и Security. Для работы используются аппаратные возможности самого телефона — Wi-Fi, Bluetooth и BLE, NFC, GPS, сотовый модем, магнитометр, барометр, микрофон, USB, UWB и ИК-порт, если они присутствуют в конкретном устройстве. Среди наиболее интересных функций — анализатор Wi-Fi, BLE-сканер с просмотром GATT, инструменты NFC, Wi-Fi Direct и Wi-Fi Aware, анализ ультразвукового диапазона 18–24 кГц, работа с внешними SDR-приёмниками через USB OTG и мониторинг датчиков смартфона. Есть также GPS-трекер с информацией о GNSS-спутниках и записью NMEA, EMF Mapper на основе магнитометра, инспектор USB-устройств и анализатор сотовых вышек. ZeroDroid написан на Kotlin с использованием Jetpack Compose и Material 3. Архитектура построена вокруг MVVM, StateFlow и Hilt, для локального хранения используется Room, для камеры — CameraX, а для распознавания QR-кодов — ML Kit и ZXing. Минимальная поддерживаемая версия — Android 8.0, хотя для полноценной работы современных Bluetooth и Wi-Fi API автор рекомендует более новые версии Android. Не все возможности доступны на каждом смартфоне: например, UWB, ИК-передатчик или барометр зависят от конкретного аппаратного оснащения. ZeroDroid на GitHub: https://github.com/theabhishekchandra/ZeroDroid Платформа: Android ⭐️: 22 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
305
18
Android Skills — что выпустил Google и почему большинство разработчиков используют навыки неправильно Вы, скорее всего, уже в
Android Skills — что выпустил Google и почему большинство разработчиков используют навыки неправильно Вы, скорее всего, уже видели анонс. Android Skills запустили в апреле; реакция превзошла ожидания Google, а в начале августа команда Android Developer Relations опубликовала подробный материал, в котором объяснила философию проекта. Большинство разработчиков восприняли это как обычное описание релиза. На самом деле это набор архитектурных решений о том, как должна выглядеть Android-разработка с помощью ИИ. И если их не понять, можно в итоге получить конфигурацию агента, которая будет стоить дороже, работать медленнее и выдавать результаты хуже, чем если бы вы вообще ничего не настраивали. Статья: https://apptractor.ru/info/articles/android-skills-chto-vypustil-google-i-pochemu-bolshinstvo-razrabotchikov-ispolzuyut-navyki-nepravilno.html Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
321
19
Архитектура Android переходит от Event-Driven UI к State-Driven UI Состояние — это то, за чем UI наблюдает постоянно. События
Архитектура Android переходит от Event-Driven UI к State-Driven UI Состояние — это то, за чем UI наблюдает постоянно. События или эффекты — это то, что UI должен обработать только один раз. Такой подход давно распространён в архитектурах MVVM и MVI. Однако если посмотреть на актуальные рекомендации Android-разработки по событиям UI, Google предлагает пересмотреть саму эту модель. Статья: https://apptractor.ru/info/articles/arhitektura-android-perehodit-ot-event-driven-ui-k-state-driven-ui.html Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
282
20
JS-инъекция для iOS-тестов: как подружить WKWebView и XCTest Мы пишем UI-тесты для Ozon Банка, и примерно каждый второй экран
JS-инъекция для iOS-тестов: как подружить WKWebView и XCTest Мы пишем UI-тесты для Ozon Банка, и примерно каждый второй экран — с WebView. Оферты, платёжные формы, веб-флоу — всё это рендерится внутри WKWebView. И здесь XCTest оказывается почти бессилен. Статья: https://habr.com/ru/companies/ozonbank/articles/1016596/ Платформа: iOS/тестирование 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
295