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

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

Размещение рекламы: @tanyasanovna
Download Telegram
Кастомизация device frame у эмулятора

В Android Studio можно настраивать кастомные рамки для эмуляторов. Таким образом, все скриншоты, которые вы будете делать, сразу будут включать нужное оформление девайсов.
Особенности рекомпозиции в Compose

- Из-за особенностей компиляции лямбд, Compose может не считать их Stable
- Data classes, содержащиеся в отличных от текущего модулях, не будут помечены Stable по умолчанию
- Часто меняющийся стейт может оказывать очень сильное влияние на перфоманс
Новый онбординг в KMM

Команда Kotlin сильно переработала документацию для KMM, в частности – последовательность статей, заданий и семплов кода, которые помогают новичкам вкатиться в SDK.
Пишем расширения для браузера на Kotlin

Идея для пет-проекта – написать собственное расширение для Chrome, которое делает что-то полезное. Шаблон по ссылке даст вам возможность не трогать JavaScript и написать его на чистом Kotlin.
ViewBinding и утечки памяти

- Часто встречаются рекомендации выставлять view binding в null, чтобы избежать утечек памяти
- Жизненный цикл View дестко привязан к Activity, поэтому в этом случае самостоятельно занулять не надо, все решится само
- В случае фрагментов ситуация другая – вью могут создаваться и уничтожаться, поэтому освобождать view binding вручную
нужно
- Для ViewHolder выставлять view binding в null тоже не требуется
Используем Koin для организации DI не только в Kotlin и KMM коде, но и в Swift

Хорошая идея по тому, как можно прикрутить Koin для резолва KMM зависимостей в Swift коде через самописную аннотацию
Решаем проблему множественных кликов в Compose

Разбор нескольких подходов к тому, чтобы не инициировать лишние действия в приложении, когда пользователь вызывает одно и то же событие несколько раз.
Все видео Droidcon Berlin 2022

В открытый доступ выложили все видео недавнего Droidcon Berlin. Советую начать вот с этих:
📹Deep Dive into DEX Files Byte-by-Byte
📹Diving into Koin 3.2
📹How we Migrated the CI/CD of our Android App to GitHub Actions
📹5 Ways to Improve Your Android Build Productivity
Talking Kotlin: Kotlin Design Patterns

Еще одно видео вам в список просмотра – Алексей Соснин, автор книги Kotlin Design Patterns, рассказывает про ее содержание и делится best practices, которых придерживается сам.
Instantiator – библиотека для быстрого создания тестовых объектов

- Значительная часть unit-тестов проверяет разные виды трансформации данных из одного формата в другой, из-за чего приходится инстанциировать много объектов с семпловыми данными
- Instantiator использует рефлексию, чтобы предзаполнить дата классы тестовыми данными
Оптимизация перфоманса

Набор советов по оптимизации различных характеристик перфоманса: рендеринга, потребления памяти, батареи и сети.
Compose или XML: кто быстрее

Команда, переписывающая свое приложение с XML на Compose, решила провести A/B тесты перфоманса на продакшне для старой и новой реализации.

- При первом открытии экрана на Compose он хуже XML по количеству frozen frames и page load duration
- При открытии следующего экрана с похожими компонентами frozen frame rate улучшается на 60%, а page load duration на 35%
- Так происходит, потому что XML Layouts всегда прекомпилированы, а в Compose – компилируются на лету, а потом кешируются
Как использовать Palette API

- Библиотека Palette помогает легко вытащить палитру цветов из любого изображения
- Палитра состоит из шести оттенков: Light Vibrant, Vibrant, Dark Vibrant, Light Muted, Muted, Dark Muted
- Ее можно использовать, чтобы адаптировать интерфейс приложения под открытое сейчас изображение
Инлайн-функция для выполнения запроса с ретраем

При работе с удаленными ресурсами разумно использовать автоматические ретраи, ведь сеть ненадежна. В статье автор поэтапно дорабатывает инлайн-функцию, которая умеет автоматически ретраить вызов.
Подробный разбор плюсов и минусов КММ в сравнении с нативной разработкой

- Чтобы оценить готовность КММ к продакшну, ребята реализовали на нем четыре тестовых проекта
- Оценивали сложность дебага, интероп, тулинг, перфоманс, влияние на размер приложения, сложность написания базовой логики и много чего еще
Plugable Features

Некоторым экранам нужно знать о большом количестве других фичей в проекте. Хороший пример – экран DeveloperSettings, на котором можно включать фичетоглы и менять глобальные настройки. Автор рассказывает, как с помощью Dagger Multibindings или ServiceLoader построить переиспользуемый экран настроек, не привязанный к одному App-модулю.
Релиз Ktor 2.1.0

Вышел новый релиз Ktor, основные изменения в котором касаются его серверной части. Особенно упрощается жизнь для новичков в бэкенде:

- CLI генератор новых проектов, который, помимо создания проекта по шаблону, сразу настраивает все окружение
- Gradle Deployment Plugin, который умеет собирать проект и в docker контейнер, и в fat jar
Типовые архитектурные паттерны переоценены

- В реальной жизни дизайн многих систем разрабатывается не так, как в книгах. Их не разрабатывают выделенные архитекторы, не документируют сложными стандартами вроде С4, не используют UML, и не пытаются привести к словарю стандартных архитектурных паттернов банды четырех
- Задача инженера – выработать максимально простую архитектуру, которая поможет решить текущую бизнес-проблему. Соответствие стандартным подходам часто влечет за собой излишнюю сложность
- Главная роль паттернов – в повышении вашей насмотренности
- Чтобы прокачаться в system design, прорабатывайте архитектуру сложных кейсов самостоятельно, запрашивайте фидбэк у коллег, сравнивайте разные варианты дизайна друг с другом, проводите ревью у других людей
Event Handlers в Compose

Event Handler’ы помогают обеспечить корректное выполнение сайд эффектов: их исполнение в правильные моменты жизненного цикла, управление ресурсами и отмену. В статье разбираются различные виды event handler’ов и подходящий контекст для их использования.
MAD Skills: За какими метриками перфоманса надо следить

- Фазы старта приложения: cold start, warm start, hot start
- Time to initial display – время до отрисовки первого фрейма приложения
- Time to full display – время до загрузки всего контента, достаточного для работы с экраном
- Frame rates должны сменяться не реже чем раз в 11.1ms