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

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

Размещение рекламы: @tanyasanovna
Download Telegram
Kotlin на Android стукнуло 5 лет

Ровно пять лет назад на сцене Google I/O произошло то, о чем Google просила большая часть коммьюнити – Kotlin признали поддерживаемым языком на Android. К юбилею подготовили небольшую статью с воспоминаниями и будущими планами Google на Kotlin. Там еще и мои цитаты есть, так что обязательно читайте!
Kevlar – библиотека с набором проверок безопасности

- Пакет antipiracy проверяет, нет ли на устройстве пользователя пиратского софта
- Пакет rooting определяет наличие root-доступа или других аномалий, связанных с системой
- Пакет integrity проверяет, не модифицировано ли как-то само приложение
This media is not supported in your browser
VIEW IN TELEGRAM
Сравнение Appyx и Compose Navigation

Недавно команда Bumble выпустила многообещающий фреймворк для навигации – Appyx. В статье его сравнивают с Compose Navigation на нескольких сценариях:

1️⃣Простой переход с главного экрана на страницу поиска
2️⃣Реализация анимированных переходов
3️⃣ViewPager-like переходы вперед и назад

По результатам сравнения у Appyx довольно много серьезных плюсов как с архитектурной стороны, так и с точки зрения доступных фичей.
Команды Почты и Облака Mail.ru ищут Android-разработчиков и запускают Weekend Offer

В команде Почты Mail.ru вам предстоит работать над умной организацией рассылок, решать задачи по сортировке писем, обеспечивать возможность отслеживать заказы из онлайн-магазинов и поддерживать платёжные системы прямо в приложении.

В команде Облака Mail.ru вы будете работать над редактором фото и документов, сервисом создания коллажей, заниматься интеграцией — например, работать над авторизацией из одного сервиса в другом в один клик, применять в работе CI/CD-практики, заниматься техническим мониторингом (Grafana) и аналитикой (MyTracker, Metida, Redash).

Успейте зарегистрироваться до 2 сентября!
This media is not supported in your browser
VIEW IN TELEGRAM
Релиз Android 13 – основные изменения для разработчиков

Стабильный релиз Android 13 наконец-то вышел. Все основные фичи уже успели разобрать во время выхода Beta версий, но на всякий случай держите небольшой разбор из официального блога.
Гайд по миграции на 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