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

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

Размещение рекламы: @tanyasanovna
Download Telegram
Гайд по миграции на Android 13

- Изменения в Media и Notifications permission’ах
- Отдельный permission для использования Advertising ID
- Изменения в поведении BOOT_COMPLETED и LOCKED_BOOT_COMPLETED событий
- Пользователь может остановить ваш foreground service и само приложение
Расследование загадочного креша

Автор статьи столкнулся с очень странным крешом на стыке Java и Kotlin кода. Расследование завело его в кишки того, как работают оптимизации R8 и компиляция Kotlin Extensions.
Первое продакшн приложение с Compose for iOS

Touchlab, авторы кучи библиотек и инструментов для КММ, выпустили первое приложение, UI которого полностью реализован на Compose для обеих платформ. Код приложения можно посмотреть здесь.
Micro – простой и удобный текстовый редактор для консоли

- Micro – идейный наследник редактора nano
- Редактор поставляется отдельным бинарником, не нужны никакие зависимости
- Поддержка множественных курсоров и удобных хоткеев
- Отличная работа с мышкой
- Написан на Go и полностью кроссплатформенный
- Есть автокомплишн и подсветка синтаксиса для 130 языков
- Поддерживает плагины
Недостатки Kotlin и способы их обойти

- Стандартная библиотека и языковые фичи подталкивают к злоупотреблению работой с nullable, из-за чего код становится плохо читаемым
- Использование nullable в качестве возвращаемого значения – не очень выразительно, так как сложно понять, что в конкретном случае означает null
- Отсутствие union-типов ведет к переусложненному коду
- Операции над коллекциями задизайнены так, что очень легко копировать всю коллекцию без реальной необходимости
This media is not supported in your browser
VIEW IN TELEGRAM
Wolfia – сервис, который позволяет пошарить эмулятор с запущенным приложением

Заливаете в облако apk, он запускается на эмуляторе, ссылку на который можно пошарить коллегам. Удобно, чтобы быстро поделиться с кем-то результатом своей работы.
Релиз kotlinx-serialization 1.4.0

- Поддержка последней версии Kotlin 1.7.10
- Интеграция с библиотекой Okio для прямой работы с IO
- Поддержка сериализации inline классов вышла из экспериментального режима
- Улучшены сообщения об ошибках благодаря доработкам сабклассов SerializationException
- Переезд документации с GitHub на сайт Kotlin
Иерархия модулей в приложении Headhunter

- Четкие правила по классификации модулей упрощают жизнь в многомодульном проекте
- Имена модулей должны быть такими, чтобы было понятно, что делает модуль и где лежит его код
- Ограничения на количество зависимостей у модуля позволяют держать под контролем время сборки
- У HH три типа модулей: app-модули, feature-модули, core-модули
- Введенные правила для каждого из типов модулей позволяют растить иерархию вширь, а не вглубь
Charty – библиотека для создания графиков для Compose

- Поддерживается много видов гистограмм, круговых диаграмм и линейных графиков
- Есть семпловое приложение, в котором можно поиграться со всеми графиками
DivKit — в опенсорсе

Ребята из Яндекса опубликовали на гитхабе новый фреймворк DivKit, который ускоряет разработку приложений. Его особенности:

- DivKit позволяет интегрировать подход Server-Driven UI на уровне отдельных элементов
- Изменения UI могут раскатываться с сервера на все версии приложения одновременно
- Кроссплатформенность: пишем один код для Android, iOS и веба.
Как расчитываются размеры Layout’ов в зависимости от их родительских элементов

- При реализации кастомного Layout вы получаете доступ к measurables, списку элементов для измерения, и constraints, списку ограничений, накладываемых родительскими элементами
- К constraints относятся ограничения не только родительских view, но и различных modifiers
- BoxWithConstraints – особенный вид Layout, в котором композиция элементов происходит уже на этапе measure/layout
Accompanist – что это за библиотеки и какая у них судьба

- Сейчас Accompanist включает в себя Pager, FlowLayouts, Navigation Transitions, Swipe Refresh и другие компоненты
- Основная цель Accompanist – тестировать пользу от фичей, пока не готовых к добавлению в Jetpack
- Эти фичи нельзя включать напрямую в AndroidX, так как использовать экспериментальный API между модулями запрещено
- 30% приложений, использующих Compose, используют и Accompanist
Официальный гайд по архитектуре offline-first приложений

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

- Организовать слой данных с двумя репозиториями – для локального хранения и работы с удаленными данными
- Построить операции чтения и записи данных
- Обрабатывать ошибки
- Решать конфликты при синхронизации
onBackPressed() deprecated

Начиная с Android 13, метод onBackPressed() депрекейтится. Причина в том, что обработка перехода назад переводится на ahead-of-time модель.
This media is not supported in your browser
VIEW IN TELEGRAM
v9 – библиотека для работы с векторными изображениями

- v9 позволяет динамически ресайзить Path-объекты, сохраняя изначальные размеры некоторых из их частей
- Аналогичным образом работают 9-patch bitmaps
- Автор библиотеки – Romain Guy, ключевой разработчик Compose и Android
Cross device SDK Developer Preview

Cross device SDK – это набор API для разработки приложений, которые работают сразу на нескольких типах устройств. Оно помогает со следующими задачами:

- Найти девайсы рядом с текущим и соединиться с ними
- Пошарить стейт между приложениями на разных устройствах
- Запустить приложение на второстепенном устройстве без запуска его на основном
- Начать выполнять задачу на одном устройстве и продолжить на другом

📹Детальное видео
📝Документация
Как писать плагины для Danger CI

- Danger – это система для автоматизации сообщений во время автоматического code review. По сути, она умеет брать output любых анализаторов кода и превращать его в понятные сообщения в GitHub PR.
- Автор статьи подключает ktlint к Danger и на его примере показывает, как решить такую задачу и для других проверок.
Онлайн-книга про алгоритмы

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

Одна из основных проблем чистой архитектуры и юзкейсов в частности состоит в том, что в ряде случаев они становятся просто бесполезными прослойками над репозиторием. Автор разбирает плюсы и минусы четырех подходов к их организации.

Оптимальный способ их организации – функциональные юзкейсы с функциональными интерфейсами.
Серия статей про MVI на стейт-машине

В серии статей разбирается, как реализовать MVI архитектуру без втаскивания в проект лишних зависимостей.

1️⃣ Основные идеи
2️⃣ Обвязка
3️⃣ Многомодульность и мультиплатформа
💻 Код на GitHub