Перевод выпуска Now in Android #12 от официалов.
Теперь в Android видео + подкаст, релизы AndroidX, Dynamic Feature Modules в Jetpack Navigation, статьи о встроенных классах Kotlin и Android styling, а также еще один эпизод подкаста ADB.
Добро пожаловать в Now in Android , ваше постоянное руководство по тому, что нового и выдающегося в мире разработки для Android.
Релизы AndroidX
AndroidX недавно выпустил несколько интересных библиотечных выпусков.
Сначала было несколько стабильных релизов. Большинство из них, такие как Fragments , Media2 , Navigation и WorkManager , были в основном исправлениями. Но был также выпуск Core 1.2.0 с новыми функциональными возможностями для уведомлений, BlendMode (обеспечивающий новые функциональные возможности платформы для более старых выпусков), ShortcutInfo и WindowInsets. Также обратите внимание, что ViewModel-SavedState 2.2.0 точно такой же, как 1.0.0; он просто увеличивает номер версии для синхронизации с тем же номером версии, что и другие артефакты Lifecycle.
Была также пара новых библиотек, которые впервые попали в альфа:
В Emoji 1.1.0 есть несколько новых эмодзи, поэтому, если вам не терпится добавить в приложение какие-либо из новых версий v12 или v12.1, начните .
Навигация 2.3.0 включает новые Dynamic Feature Modules (см. Ниже), а также новый артефакт тестирования навигации.
Navigation and Dynamic Feature Modules
В: Что лучше, чем новый API?
A: Существующий API, который делает новые вещи .
Войтек Каличински и Бен Вайс работают над новым API в компоненте навигации, который упрощает использование Dynamic Feature Modules, используя тот же API навигации, который вы уже использовали для нединамических пунктов назначения.
Сначала немного истории и терминологии:
Android App Bundles — это новый формат приложений (первый со времени изобретения APK!), Который позволяет разработчикам загружать расширенный набор того, что нужно всем пользователям. Затем Play Store определяет подмножество (на основе конфигурации устройства) для установки на любом данном устройстве. Это дает разработчикам более простой способ нацеливания на все возможные сценарии, не загружая много разных APK, и в то же время позволяет Play Store уменьшать размеры загрузки только до того, что необходимо.
Dynamic feature modules предоставляют разработчикам дополнительную возможность разделения их приложения на отдельные части (модули), которые не обязательно должны быть установлены немедленно. Таким образом, приложение может быть установлено с некоторым минимальным подмножеством, необходимым при первом запуске, а более поздние модули (скажем, дополнительные ресурсы для дополнительных путей через приложение) могут быть установлены позже, по мере необходимости.
Разработчики могут использовать API в Play Core Library, чтобы вручную запрашивать загрузку и установку Dynamic Feature Modules.
Но теперь, используя Navigation Component версии 2.3.0 , dynamic feature modules стали еще проще. Вы можете использовать обычный вызов navigate(). Когда место назначения находится в Dynamic Feature Modules, библиотека позаботится о деталях загрузки и установки необходимых компонентов.
В настоящее время библиотека находится в альфа-версии, поэтому, возможно, она не совсем готова для вашего production кода. Но если вы хотите эту функцию, пожалуйста, поиграйте с ней и отправьте нам свой отзыв. Проверьте документы для получения дополнительной информации, и попробуйте образец, который Бен Вайс опубликовал только на прошлой неделе.
Статьи
Zero-cost* abstractions in Kotlin
Флорина Мунтенеску продолжает серию статей по словарю Kotlin этой статьей о встроенных классах, экспериментальная функция в Kotlin 1.3.50.
Встроенные классы могут обеспечить повышенный уровень безопасности типов для переменных, которые в противном случае могут конфликтовать и вызывать ошибки времени выполнения. Более того, они могут делать это, не внося никаких накладных расходов *, компилируя в код, который просто использует базовый тип, вместо того, чтобы фактически создавать класс, который переносит этот тип.
* В зависимости от того, как вы используете класс. Смотрите статью с разбором деталей и ошибок.
Android Styling: Themes vs Styles
Легко и часто путать понятия и использование тем и стилей. В конце концов, они оба используют тег <style>, поэтому они очень похожи снаружи.
Ник Бутчер начал новую серию статей, чтобы помочь глубже объяснить эту область разработки Android.
В этой первой статье серии Ник рассматривает разницу между темами и стилями и областями, в которых разработчики могут выбирать одни по сравнению с другими.
Примечание. Эта серия статей расширяет содержание, которое Ник Бутчер и Крис Бейнс представили на Android Dev Summit:
ADB Podcast Episodes
Был эпизод Backstage для разработчиков Android, опубликованный со времени последнего Now in Android. Проверьте это по ссылке ниже или в вашем любимом клиенте подкастов:
ADB 132: Хранение данных с помощью Store
Один из шаблонов для хранения и извлечения данных, который мы рекомендуем в нашем Руководстве по архитектуре приложений, — это использование Repository, который обеспечивает уровень абстракции поверх того, откуда поступают эти данные. Например, у вас могут быть данные, хранящиеся в кеше локально, а также на сервере в сети. Этот подход позволяет вашему коду извлекать данные, не беспокоясь о том, где эти данные находятся или как их получить, предоставляя это Repository
Замечательно иметь предложенную технику, но не лучше ли было бы иметь API, который бы облегчил эту часть?
Библиотека Store (в настоящее время в альфа-версии) делает именно это. В этом эпизоде мы разговаривали с Майком Нахимовичем из Dropbox и Йигитом Бояром из команды Android Toolkit. Майк руководит разработкой библиотеки с открытым исходным кодом Store (которую Йигит также использует в свободное время).
Заключение
Вот и все на этот раз. Проверьте видео в серии Android и подкаст ! Попробуйте последние выпуски AndroidX ! Проверьте новую Navigation library для навигации с dynamic feature modules! Читайте статьи о встроенных классах в Kotlin и темы против стилей ! Слушайте последний эпизод подкаста АБР ! И возвращайтесь сюда в ближайшее время для следующих новостей из вселенной разработчиков Android.
Спасибо Войтеку Каличски и Нику Бутчеру.