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

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

Размещение рекламы: @tanyasanovna
Download Telegram
Бенчмарк переезда AGP с JDK 11 на JDK 17

Android Gradle Plugin 8.0.0 будет требовать использования JDK 17. Автор статьи решил посмотреть, как изменение версии Java повлияет на перфоманс, и замерил несколько сценариев работы с приложением Now in Android.
KEEP про data objects

- Data objects – новая фича Kotlin, которая совмещает data classes и objects. Например, вы сможете объявлять синглтоны, у которых из коробки будет реализована функция toString.
- Превью data objects появится в Kotlin 1.8.20, а стабильная фича выйдет в 1.9.0.
- В KEEP хорошо разобраны спорные вопросы, приведены сравнения с другими языками и подробно описан дизайн фичи.
Сравнение перфоманса разных бэкендов Kotlin

Таблица с оценкой перфоманса разных способов компиляции Kotlin-кода и размера получающихся артефактов. Важно помнить, что любые бенчмарки показывают только часть картины, и к ним нужно относиться изначально довольно скептично. Как минимум, оценка производительности на числодробилке будет значительно отличаться от работы с Android проектами.
This media is not supported in your browser
VIEW IN TELEGRAM
Тултипы в Compose с помощью библиотеки Balloon

- Balloon – библиотека для создания анимированных интерфейсных подсказок, которые очень хорошо кастомизируются. Библиотека полностью совместима с Compose.
- В статье приводится пример ее использования для создания простого тултипа.
Работа с фокусом в Compose

- Compose дает несколько API для управления фокусом текстовых полей: FocusManager, FocusRequester и различные модификаторы.
- В статье разбирается, как с помощью этих API можно получить текущий фокус, переместить его на другое поле, определив их порядок, и очистить его.
Генеративное искусство на Compose Desktop

18 января пройдет вебинар, на котором Антон Архипов из команды Kotlin покажет, как можно использовать Compose Desktop для отрисовки сложных геометрических фигур и генеративного арта. Вполне себе идея для вашего пет-проекта!
Как написать свой сериализатор для kotlinx.serialization

Ядро kotlinx.serialization поддерживает не так много форматов – JSON, Protobuf и несколько других. Поддержкой сериализации других форматов в основном занимается коммьюнити. Автор библиотеки KToml рассказывает о деталях устройства и работы kotlinx.serialization и накидывает кучу советов по тому, как писать свои собственные сериализаторы.

Слайды доклада
Сколько можно заработать на книге про Android

Автор блога Effective Android, статьями из которого я регулярно делюсь, написал книгу про внутреннее устройство Jetpack Compose. С этого момента прошло уже полтора года, и он поделился своим опытом авторства.

Писать книгу про внутреннее устройство фреймворка довольно тяжело, потому что оно может меняться очень часто, и книгу вместе с ним придется обновлять. Для Compose, который только-только зарелизился, это особенно актуально.

Продажи принесли ему $32k за все время, но это до вычета налогов. Кроме этого, он еще смог привлечь спонсоров, которые принесли дополнительные $6.5k.
Планы по улучшению поддержки Kotlin в IDE

Один из основных фокусов команды Kotlin на ближайшие полгода – переписывание IDE поддержки языка на новый К2 компилятор. Этот проект в первую очередь направлен на то, чтобы улучшить стабильность анализа кода и скорость навигации, автокомплишна и подсветки кода и в IDEA, и в Android Studio.

Первая публичная версия нового плагина для IDEA выйдет в июле 2023. Важный момент – первый релиз будет Lightweight версией, которая включает в себя только самые базовые IDE фичи:

🛠️Полноценная подсветка кода и Find Usages
🛠️Базовые автокомплишн и дебаггер
🛠️Основные рефакторинги и code insight фичи (go to declaration, parameter info и т.д.)
🛠️Самые частоиспользуемые инспекции
🛠️Поддержка мультиплатформы и gradle.kts

Старый и новый плагин какле-то время будут жить вместе, так что вы сможете выбирать, что вам важнее – полный список текущих IDE фичей или быстрый перфоманс.
Плагин с миникартой для IntelliJ

Во многих редакторах кода есть топовая фича – миникарта открытого сейчас файла. Она упрощает навигацию для тех, кому проще это делать визуально, а не по сигнатурам. В платформу IntelliJ фичу пока не втаскивают, поэтому вместо этого можете попробовать плагин CodeGlance.
Вводное видео в CameraX

CameraX – новая Jetpack библиотека, которая берет на себя все взаимодействие с камерой и обработку эдж-кейсов, связанных с поведением разных девайсов.

Во вводном пятиминутном видео рассказывается про основные концепции библиотеки и сценарии, в которых она вам может пригодиться.
Проект iosched заархивирован

Ушла эпоха – iosched, приложение с расписанием Google I/O, которое работало как пример использования архитектурных рекомендаций Google, официально задепрекейчено и заархивировано. Вместо него будет обновляться Now in Android.
Релиз Android Studio Electric Eel

Вышла новая стабильная Android Studio поверх IntelliJ Platform 2022.1.1. Самые заметные изменения:

🎨Дизайн
- Compose Preview обновляются автоматически
- Возможность задать определенный девайс для Compose Preview
- Подсвечивание рекомпозиций в Layout Inspector
- Линтинг для XML лэйаутов
- Единая Problems Panel с репортингом о всех проблемах из разных тулов

🧱Сборка
- Улучшена производительность Gradle Sync, аж на 60%
- Build Analyzer показывает, как скачивание зависимостей влияет на билд

👀Тулинг
- Полностью обновленный Logcat
- Новое App Quality Insights окно, которое подтягивает всю информацию из Crashlytics
- Возможность создавать эмуляторы десктопа
- Мирроринг физического девайса прямо в Android Studio, в то же окно, где показывается эмулятор
Как новая Android Studio ускорила импорт для Square

Одна из фичей, которые появились в Android Studio Electric Eel – parallel project import. Она особенно полезна для больших кодовых баз, состоящих из большого количества Gradle subprojects. Для Square ее использование ускорило импорт проекта на 60% – с 9 до 3.5 минут.
Coroutines и Project Loom

Инструкция по тому, как написать свой Dispatcher, который будет работать с Project Loom тредами, и с помощью которого можно писать неблокирующий код, и сравнение его производительности с Dispatchers.IO.
Как сделать анимацию с помощью MotionLayout (туториал по ссылке)

MotionLayout – это контейнер, который позволяет просто создавать сложные анимации, для чего требуется лишь описать сцену.

Android-разработчик Павел Беловол рассказывает в своей статье на ХабрХабр, про свой опыт работы с MotionLayout на примере продакшн-задачи в онлайн-кинотеатре KION. Из статьи вы узнаете, где нужно использовать MotionLayout, а где лучше обойтись без него и писать код анимации самостоятельно.

Читать здесь.
Почему yaml – плохой формат

Скорее всего, до вас долетали обрывки споров про то, насколько хорошая идея использовать yaml для различных конфигов.

Все сводится к тому, что спецификация Yaml на порядок сложнее, чем JSON. Например, спека предусматривает 63 разных способа объявления multiline строк. Кроме того, она еще и значительно меняется от версии к версии.

Вот несколько примеров непредсказуемого поведения YAML конфигов:

*️⃣`- 22:22` в зависимости от версии парсера может быть прочитана как строка, а может – как число 1342.
*️⃣Некоторые символы считываются как строки, а некоторые оказываются зарезервированы под что-то еще. Например, - *.png – невалидный сниппет, так как * зарезервирована. А - !.git будет считан, как пустая строка.
*️⃣Если где-то в конфиге встретится строчка - no, она будет интерпретирована как false, а не как строка. У этого поведения есть даже свое имя – Norway problem, так как региональный код Норвегии, который часто можно встретить в таких конфигах, тоже no. Ах да, так ведет себя только самая новая версия yaml, что добавляет веселья.
*️⃣Не стоит использовать ~, так как это алиас для null.
Уроки из реализации swipe to dismiss на Compose

Swipe to dismiss – довольно стандартная фича, реализация которой не должна занимать много времени. Тем не менее, автор статьи потратил три дня на дебаг нескольких неочевидных моментов, которыми и делится в статье.
Compose BOM для альфа версий компонентов

Недавно Google начал публиковать Gradle BOM для всех Compose зависимостей. Его использование освобождает вас от необходимости менеджерить все версии вручную.

Если вы хотите использовать в проекте не стабильные версии зависимостей, а альфа, первым получая все экспериментальные фичи, то можете переключиться на неофициальный автообновляемый BOM по ссылке.
This media is not supported in your browser
VIEW IN TELEGRAM
Пошаговая реализация Dynamic Island на Compose

Dynamic Island из iOS – спорный с точки зрения UX, но интересный с точки зрения реализации нестандартного UI компонент. Если вы ищете, на каких примерах потренироваться с анимациями на Compose, то как раз отлично подойдет.