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

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

Размещение рекламы: @tanyasanovna
Download Telegram
Коллекция 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 в свое приложение, проводили первые эксперименты и решали возникающие проблемы.
Видеокурс по корутинам

Кирилл Розов закончил основную часть своего бесплатного видеокурса по корутинам. Самое время его наконец посмотреть! Программа курса:
- Особенности корутин
- CoroutineContext
- Жизненный цикл корутин и structured concurrency
- Обработка ошибок
- Каналы
- Синхронизация между корутинами
- Flow
- Особенности в Android
Обновление dependency-analysis-android-gradle-plugin

Dependency Analysis Plugin – очень полезная штука, которая позволяет детектить неиспользуемые зависимости, транзитивные зависимости, ненужные плагины и неправильную конфигурацию зависимостей. В версии 1.11.0 появилось несколько новых фичей:

- Таска fixDependencies, которая автоматически применяет все предлагаемые плагином исправления к вашим билд-скриптам.
- Более детальное объяснение предлагаемых исправлений по структуре модулей.

Если вы хотите узнать про плагин больше, вот релевантные статьи:
- The proper care and feeding of your Gradle build
- Dependency Analysis Gradle Plugin: Using bytecode analysis to find unused dependencies
- Dependency Analysis Gradle Plugin: What’s an ABI
- Reducing my Gradle plugin’s impact on configuration time: A journey
KMMT – огромный шаблон для создания KMM проектов

- Networking слой на Ktor
- Async Task Helper для запуска кода на бэкграунд тредах на корутинах
- Обвязка для передачи объектов между экранами
- Обвязка для выполнения платформо-зависимого кода
- Модуль сериализации на kotlinx.serialization
- Хранение данных в key-value store, LiveData, SQLDelight
Выводы из года ускорения сборки Яндекс.Браузера

В приложении Яндекс.Браузера ~150 Gradle-модулей, ~2 млн строк кода на Java/Kotlin, десяток Gradle-плагинов и тысячи строк кода в buildSrc. Команда, занимающаяся ускорением сборки проекта, поделилась своим опытом.

- Какие сценарии и с помощью каких инструментов замерять
- Флаги Gradle, которые надо включать
- Оптимизация R.java
- Почему надо отказываться от flavours
- Configuration и build cache
- Работа с версиями зависимостей
Более безопасная альтернатива dependsOn(Task) в Gradle

Иногда в разных Gradle тасках приходится работать с одним и тем же файлом. Одна таска записывает туда данные, другая – читает. При их связи через dependsOn появляется много рисков, которые могут отстрелить при рефакторинге. Автор статьи предлагает более гибкий и безопасный способ конфигурации таких тасок.
Gradle Convention Plugins в приложении Now in Android

Convention Plugins – это удобный способ пошарить кусочки логики билда между разными модулями в проекте. В новом образцовом приложении Now in Android можно посмотреть на то, как они используются.

- Общие функции, нужные разным плагинам, вынесены в отдельные файлы
- Compose и Kapt подключаются только к тем модулям, где они действительно нужны
- В статье есть прямые ссылки на все интересные моменты в реализации