Android Good Reads
3.88K subscribers
344 photos
13 videos
1 file
2K links
Самые интересные статьи, видео и новости, связанные с Android разработкой. Не больше трёх материалов в день.

Автор канала: @Lamprof

Размещение рекламы: @tanyasanovna
Download Telegram
KotlinDL теперь на Android

ONNX – это спецификация deep learning моделей, которая поддерживается большинством фреймворков для их обучения, например, TensorFlow. KotlinDL дает возможность запускать такие модели прямо на устройстве с помощью простого API.

Вместе с библиотекой идут несколько уже обученных моделей для следующих задач:

👀Определение объектов
🌅Классификация изображений
💃Распознавание поз
😊Распознавание лиц
🫠Выравнивание лиц

Что еще есть в библиотеке:
- DSL для препроцессинга изображений до передачи их нейронке, с готовыми функциями для кропа, изменения масштаба и поворота.
- Поддержка аппаратного ускорения на девайсах со специальным железом.
- Поддержка любых кастомных ONNX моделей, которые обучили вы сами.

Делитесь фидбэком в комментариях, команде он очень важен!
This media is not supported in your browser
VIEW IN TELEGRAM
Самое простое интро в шейдеры

Если вы никогда не писали свои шейдеры, и просто киваете с умным видом, когда кто-то начинает говорить про оптимизированный под GPU код, обязательно прочитайте статью.

💻Отличие CPU от GPU в вопросах вычислений
🤔Ограничения в разработке шейдеров
🎨Примеры шейдеров
Yatagan – новый DI фреймворк

- Ребята из Яндекс Браузера написали и заопенсорсили новый DI фреймворк, практически полностью совместимый с Dagger по API. Его основной плюс в том, что он ускорил сборку их проекта в два раза.
- В статье с большим количеством деталей разбирается история управления зависимостями в их проекте, архитектура и реализация Yatagan.
Как измерить, сколько времени выполняется блок кода

Самый простой способ узнать, сколько времени уходит на выполнение какого-то куска кода – обернуть его в экспериментальную функцию стандартной библиотеки measureTime. После выполнения лямбды возвращается объект Duration, содержащий информацию о времени ее исполнения.
Architecture Templates от Google

Google завернули все свои архитектурные рекомендации в несколько шаблонов на GitHub.
apk.sh – консольный инструмент для реверс-инжиниринга

- Скрипт помогает автоматизировать рутинные задачи реверс-инжиниринга, в том числе загрузку, декодирование и патчинг APK.
- Под капотом используется apktool и frida.
Релиз-трейны в команде Додо

Чем больше становится количество команд, разрабатывающих фичи в мобильном приложении, тем сложнее организовывать feature-driven релизы – теряется предсказуемость, повышается сложность тестирования интеграции фичей друг с другом.

Стандартное решение проблемы – организация релизного поезда. Все релизы катятся по строгому расписанию, вне зависимости от статуса готовности конкретных фичей. Фича готова – значит, попадет в релиз. Чуть-чуть не успели – поедет в следующий.

Команда Додо рассказала, какие проблемы в процессах подтолкнули их к организации релиз-трейнов, как они внедряли новый процесс, и как он повлиял на метрики разработки: lead time и среднее количество дефектов на релиз.
Мини-курс по Rust от команды Android

Сравнительно недавно в AOSP занесли Rust для разработки части компонентов операционной системы. Чтобы разработчикам было проще заонбордиться, команда выпустила четырехдневный курс по Rust для новичков. Задачи курса – познакомить с базовым синтаксисом и концепциями языка, а заодно погрузить в Android-related специфику.

Если вы еще не придумали, чем заняться на новогодних каникулах, знакомство с Rust может быть отличной идеей!
This media is not supported in your browser
VIEW IN TELEGRAM
AdbOrc – простой шаринг Android девайсов в команде

AdbOrc создает распределенную виртуальную ферму девайсов. Им не нужно физически находиться в одном месте, достаточно просто подключить их к компьютеру и расшарить для подключения через консольную тулу.

Сеть состоит из трех ролей:

📲Supplier – тот, кто предоставляет свой девайс для использования.
💻Consumer – тот, кто подключается к чужому девайсу.
🔄MarketMaker – хаб, который регистрирует девайсы и менеджерит доступ к ним.

На каждый расшаренный девайс стартует ADB сервер, информация о котором расшаривается через MarketMaker. Для доступа к экрану девайса используется scrcpy. Все соединения шифруются.

AdbOrc на GitHub
Pager API переезжает из Accompanist в Compose

API для работы с горизонтальными и вертикальными лэйаутами с постраничной прокруткой переезжает из Accompanist в Compose 1.4.0. Пока что под экспериментальным флагом.
История одного крэша

Расследование причин крэша с NoClassDefFoundError, который происходил на 21 API и сборке без R8. Спойлер – вся проблема в ограничении количества dex файлов в 100 штук на старых версиях Android.
Обзор редко используемых фичей Kotlin

В статье разбирается несколько полезных, но сравнительно редко используемых фичей Kotlin:

👉fun interface / function types
👉type alias
👉import alias
👉value class
👉data object
Вышел Kotlin 1.8.0

- Значительна улучшена производительность kotlin-reflect
- Новый флаг -Xdebug, который отключает все оптимизации во время дебага
- Удален старый Kotlin/JVM бэкенд
- Новые аннотации в Kotlin/Native для улучшения интеропа с Objective-C/Swift
- Стабилизирован новый Kotlin/JS бэкенд
- Совместимость с Gradle 7.3
- Компиляторные флаги теперь можно задавать с помощью удобного Gradle DSL
Гайд по прохождению System design интервью

Подробный алгоритм прохождения архитектурной секции интервью с учетом мобильной специфики на примере ленты Твиттера:

- Как правильно собирать требования и какие уточняющие вопросы задавать
- Как отрисовать общую архитектурную схему и какие компоненты показать
- Как подойти к дизайну взаимодействия с бэкендом
- Как обсуждать организацию хранения данных
- Какие дополнительные темы могут всплывать
Подкаст про MockK

MockK – одна из популярных библиотек для создания моков в Kotlin. С ее автором записали эпизод подкаста The Developers’ Bakery, в котором разобрали нюансы работы с моками в JVM, отличия MockK от других библиотек, детали его реализации и оптимизации перфоманса.
Gradle 8.0-RC

Вышла предрелизная версия Gradle. Большая часть касается улучшений поддержки KTS в Gradle:

- Появилась поддержка всех языковых и stdlib фичей Kotlin выше версии 1.4.0.
- Убрали лок на Java 8 для компиляции скриптов.
- Компиляция скриптов ускорена на 20% за счет кастомного интерпретатора для блока plugins {}.

Учитывая, что вместе с этим в Android Studio Canary в несколько раз улучшили перфоманс IDE, все движется к тому, что скоро .gradle.kts станет дефолтной опцией для написания билдскриптов.

Кроме этого, в Gradle 8.0 много улучшений для configuration cache и buildSrc билдов.
This media is not supported in your browser
VIEW IN TELEGRAM
Android приложение, написанное ChatGPT

За 78 вопросов и ответов к ChatGPT автор получил приложение, которое выводит 50 популярных бумаг с их ценами. Весь проект настроен и код сгенерирован нейронкой, а баги, если появлялись, исправлялись тоже с помощью чат-бота.

Код на GitHub
Опыт использования Compose Desktop в продакшне

- Фреймворк лучше всего подходит для написания приложений, которым не требуется тесная интеграция с системой.
- Например, компонент для реализации меню в Tray выглядит и работает нормально в macOS, но на Windows он устаревший. А поддержки действий с уведомлениями вообще нет.
- Вызывать нативные API платформы тоже довольно больно, хотя и теоретически возможно.

Документация и примеры