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

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

Размещение рекламы: @tanyasanovna
Download Telegram
Подкаст про Proguard с его разработчиком

- Как Proguard работает под капотом
- Proguard vs R8
- Runtime оптимизации в Proguard
Обновленные рекомендации по использованию Compose в RecyclerView

Начиная с RecyclerView 1.3.0-alpha02 и Compose UI 1.2.0-beta02, Composables больше не уничтожаются при выходе за границы экрана. Вместо этого они сохраняются и переиспользуются. Благодаря такому подходу исчез большой перфоманс-оверхед из-за необходимости постоянно пересоздавать composables.
DNS-over-HTTPS/3 включен в Android 11 и выше

Большинство сетевых соединений начинаются с запроса к DNS. Исторически сложилось, что эти запросы не шифровались. Начиная с Android 9, Google выкатил фичу DNS-over-TLS, которая закрывает эту проблему, но порождает другие:
- Если первый запрос к серверу резолвится долго, все последующие ждут результата этого резолва, из-за чего общая производительность падает.
- При переходе из сотовой сети в сеть, что происходит при движении довольно часто, соединение рвется и его нужно восстанавливать с нуля, что тоже влияет на перфоманс.

Google вот только что выкатили обновление для всех устройств, начиная с Android 11, с новой фичей – DNS-over-HTTP/3. Она решает все перечисленные проблемы, а в нестабильных сетях работает даже лучше, чем оригинальный DNS. Поддержка протокола уже есть у нескольких ключевых DNS сервисов – Cloudflare и Google DNS.

Короче говоря, если хотите улучшить производительность сети в вашем проекте, проверьте, что ваш DNS сервис поддерживает этот протокол.
Выпуск Подлодки про протоколы и сети

Если вы не очень шарите в сетях и протоколах, но хотели бы разобраться – мы сравнительно недавно записали выпуск Подлодки из двух частей, где на пальцах разобрали, как работают современные сети, из каких этапов состоит сетевой запрос, и в целом как работает интернет.
- Часть 1
- Часть 2
Positional memoization in Jetpack Compose

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

А если вы захотите более подробного разбора, обязательно посмотрите старую статью от Leland Richardson, одного из авторов фреймворка.
Как сохранить стейт UI в Compose при смене ориентации

Разбор двух подходов к сохранению UI стейта при смене ориентации или пересоздании Activity.
- Сохранение объектов с помощью kotlin-parcelable
- Реализация mapSaver`/`listSaver функции для тех случаев, когда использование Parcelable не подходит
Коллекция CLI-команд для обработки изображений

В процессе работы часто приходится что-то делать с изображениями: ресайзить, мерджить или конвертировать между форматами. По ссылке – полезный гайд по самым частым консольным командам, которые вам могут помочь.
Разбор приложения Now in Android

Недавно команда Android зарелизила новое семпловое приложение – Now in Android. Его задача – показывать на примере все рекомендуемые подходы к архитектуре, UI и перфомансу. Если у вас пока не дошли руки, чтобы склонировать проект и разобраться с ним самостоятельно, статья даст хорошее понимание, как конкретно спроектирован каждый слой проекта и какие зависимости используются.
Включите Gradle configuration cache в своем проекте

Если вы еще не включили configuration cache, самое время это сделать. В твиттере делятся результатами – в проекте со 135 subprojects использование кеша сократило время сборки на 61-98%, с четырех минут до десятков секунд.
Интерактивный гайд по работе со стейтом с помощью Flow

Страница со статьей собрана на Compose for Web. Благодаря этому, можно не только смотреть на примеры кода, но и на ходу играть со стейтом и смотреть, как обрабатываются его изменения. Автор разбирает:
- Как реализовать UDF с помощью Flows
- Как прокидывать действия пользователя до стейта
- Как мерджить изменения в стейте
- Как решать конфликты при изменениях
Вышел Detekt-1.21.0

- Добавлены 6 новых правил: NullableBooleanCheck, CouldBeSequence, UnnecessaryBackticks, ForbiddenSuppress, MaxChainedCallsOnSameLine, CascadingCallWrapping
- Добавлена поддержка маркдауна для отчетов
- В конфиге для каждого свойства теперь можно указывать reason, в котором объясняется, почему у него именно такое значение
This media is not supported in your browser
VIEW IN TELEGRAM
Appyx – новый фреймворк для навигации от Bumble

Ключевая идея фреймворка – разделение всего приложения на ноды, навигация между которыми происхожит путем перемещения по дереву всех нод. Каждая нода включает в себя и UI, и бизнес-логику. Фреймворк из коробки дает историю переходов, state restoration и поддержку Jetpack Compose Transitions.
📆Каждый день я стараюсь публиковать хотя бы один классный и полезный материал про Android разработку. За месяц их набегает несколько десятков, и ориентироваться в них не всегда легко. Чтобы облегчить вам задачу, я периодически публикую дайджест самых популярных постов, разбитых на категории.

📰Новости Kotlin
Новая инкременталка в Kotlin 1.7.0
Расширенные билд репорты в Kotlin 1.7.0

🧱Архитектура и перфоманс
Полная история рефакторинга Яндекс.Музыки
Как строить архитектуру приложений с шарингом кода с КММ
Год в продакшне с КММ и 70% реюзом кода
Оптимизация перфоманса разных этапов сетевого запроса

🎁Прочее
Как упростить рутинные задачи в Android Studio
Сайт с актуальными версиями и совместимостью зависимостей Compose
Собеседование на Андроид-разработчика: Антон Дудаков и Артем Зиннатуллин
Советы по дебагу кода

🕵️‍♀️Кстати, у меня есть еще один канал, на который стоит подписаться тем, кто хочет расти в управление командойTechLead Good Reads. Держите несколько интересных материалов оттуда на закуску!
Как устроиться тимлидом в европейскую компанию
Как решать конфликты дизайнеров и разработчиков
Как рассказывать про свой опыт работы с помощью методики STAR

Если дайджест вам понравился – ставьте ❤️, 👍 и 🔥. Благодаря этому я пойму, что собирал его не зря! А если у вас будут конкретные предложения по его улучшению – смело пишите в комментарии!

#digest
Разбор библиотеки Mosaic

Mosaic – очень подходящий пример, чтобы разобраться, как писать свои библиотеки поверх compose-runtime и compose-compiler. В случае Mosaic это нужно для отображения CLI UI, но в вашем случае может пригодиться для решения любой задачи по управлению состоянием, которое можно описать деревом нод.

- Типы нод, их параметры и имплементация
- Составление нод в дерево
- Управление рекомпозицией
- Связь нод и конкретного UI элемента
Predictive back gestures

Чтобы помочь пользователям видеть заранее, куда их приведет свайп «назад», в Android появится новая фича – predictive back gesture. Еще до завершения свайпа пользователь будет видеть, на какой конкретно экран этот жест его приведет.

Фича не будет доступна пользователям в Android 13, но в Beta 4 можно ее попробовать, включив соответствующий флаг. Почитайте анонс, чтобы посмотреть на изменения в API, которые вам скоро надо будет заадоптить.
В androidx завезли поддержку мультиплатформы

В сорцах androidx.collection и datastore появились коммиты, добавляющие поддержку iOS и macOS таргетов.
Релиз Jetpack Compose 1.2

- Новые API для работы с Grid вышли из Experimental и стали стабильными
- WindowInsets для определения разных отступов на девайсе
- Поддержка nested scroll из коробки
- Easing curves для анимаций
- Новые экспериментальные фичи: LazyLayout, загружаемые шрифты, много фич по работе с текстом

А кроме этого, стал стабильным и Compose for Wear OS 1.0.
Обновился роадмап разработки Compose

Основной фокус следующего релиза будет на:
🏎 Перфомансе
🧐 Поддержке advanced кейсов
🎨 Компонентах из Material 3
🛠 Улучшении тулинга, в том числе Preview и Live Edit

Еще из интересного в роадмапе:

- Стабилизация Paging Compose APIs
- Transition animations в Navigation
- Улучшения обработки эксепшнов на уровне compose-runtime
Первые шаги с Compose в Headhunter

Команда HH поделилась историей того, как они принимали решение затаскивать Compose в свое приложение, проводили первые эксперименты и решали возникающие проблемы.