Еженедельный дайджест новостей из мира Android разработки от Android Broadcast. Подписывайтесь на Telegram канал и YouTube канал, чтобы оставаться в курсе последних трендов и лучших практик Android разработки.

Неделька выдалась шикарной - нам показали новую версию Android, а также объявили о новом выпуске TheAndroidShow, посвященного Jetpack Compose. Ставлю на то, что там нам представят Beta Compose, расскажут когда же ждать релиза. Очень надеюсь что также будет стабилизация API для первой версии. Давайте разбираться.

Анонсирована Android 12 Developer Preview 1

В первой версии для разработчиков дают возможность ознакомиться с нововведениями, которые планируются внедрить в следующей версии Android. Как всегда, обновления касаются ограничений, направленных на обеспечение безопасности и приватности данных пользователей. Также добавили поддержку современных медиа форматов, снова обновили UI уведомлений и улучшили производительность. По традиции блокируется скрытые API для вызова рефлексией, а также добавлены новые API. 

Нас ждёт три Developer Preview каждый месяц, первую Beta увидим в мае, четвертая Beta, она же Platform Stability релиз, состоится в августе и весной нас ждёт релиз.

Сборка уже доступна для установки на все смартфоны Pixel, начиная с третьего поколения.

Я уже готовлю разбор всех новинок Android 12, а вполне возможно когда ты смотришь этот ролик он уже есть на канале.

Обновление WindowManager

В новой альфа-версии WindowManager добавили возможность использовать новые возможности из Android 11, улучшили API, а также меняют рекомендуемый способ для получения информации об экранах устройства

Google активно стандартизирует API, чтобы все мы привыкали к тому что у устройства может быть несколько дисплеев, он может сгибаться и часть или отдельный экран может стать клавиатурой или геймпадом.

Все эти тенденции отражаются в библиотеке WindowManager, которая добавили новый класс DisplayFeatures, позволяющий получить возможности экранов и сделали backport WindowMetrics API из Android 11 для всех версий Android, начиная с 4.1.

Multik: Multidimensional Arrays in Kotlin

JetBrains представила библиотеку для работы с многомерными массивами Multik

Библиотека содержит структуры данных для многомерных массивов так и математические операции с ними. Multik призвана оптимизировать проблемы для работы с такими сложными вычислениями

Реализация структур данных в Multik отделена от операций и подключается отдельной зависимостью. Операторы имеют 3 реализации:

  • Полная реализация на JVM

  • Нативная реализация, основанная на OpenBLAS

  • Стандартная реализация, комбинирующая в себе нативную и JVM реализации, для обеспечения лучшей производительности

Вполне возможно в своих проектах вы сможете использовать эту библиотеку или применить её идею с архитектурой для своих решений

Статья «Async Text Loading in Android with PrecomputedText»

Статья "Асинхронная загрузка текста в Android при помощи PrecomputedText" рассказывает об эффективной отрисовки текста

В наших приложениях мы везде сталкиваемся с текстами, но никто не задумывается насколько тяжела эта операция. В Android, например, отключили перенос текста в том виде в котором мы привыкли к нему в письменной речи из-за сложности этой операции. В Android мы привыкли что отрисовка делается на UI потоке и все операции касательно UI выполняются только там, но отрисовка текста включает в себя много предварительной подготовки. Поэтому есть смысл вынести эту работу на фоновый поток и только отрисовку делать на главном потоке. Для этого разработали специальное API PrecomputedText и его Compat версию. В статье автор рассказывает обо всём подробнее и показывает использование API.

Статья «Let’s be explicit about our intent(-filters)»

В Android 12 ваше приложение не будет устанавливаться, если у компонентов в AndroidManifest не будет явно объявлено значение атрибута exported.

В AndroidManifest всегда была особенность - по умолчанию атрибут exported всегда false, т.е. доступ к этому компоненту можно сделать только внутри приложения. Объявлять его явно не надо было. Одна странность - если у вашего компонента появляется хотя бы один intent-filter, то значение exported по умолчанию меняется на true и компонент становится доступен всем. Это уязвимостью могли воспользоваться злоумышленники, а также много багхантеров заработали на этом в популярных приложениях.

В Android 12 нельзя будет установить приложение, у которого есть компоненты с intent-filter без явного указанного значения флага exported. Ограничение будет распространяться на все приложения, независимо от targetSdk, так что уже пора пересмотреть манифест ваших приложений. Очень надеюсь что соответствующая проверка появится в Android Lint, а также Google Play будет проверять манифест при загрузке приложения.

Статья "How RxJava chain actually works"

Статья "Как на самом деле работает цепочка RxJava" рассказывает о особенностях жизненного цикла Rx цепочек

Как бы мы не любили Kotlin, хотели бы только Coroutine (очень надеюсь что вам они тоже нравится) и хотели бы Flow в своих проектах, но долгие годы популярности RxJava в Android мире оставили свой след. Множество проектов используют их и больше не каких других подходов. Поэтому статья будет полезна тем, кто изучает RxJava и должны разобраться в особенностях работы цепочки.

Петиция по смене имени пакета Jetpack Compose

Запустили петицию по смене пакета Jetpack Compose c androidx.compose на compose.

Jetpack Compose с момента его анонса уже успел стать мультиплатформенным и выйти за рамки Android. Уже сейчас он поддерживает desktop и идёт работы на добавление Frontend. Поэтому странно что пакет в библиотеке до сих пор начинается с androidx. Важно сменить имя пакета, чтобы инструмент не ассоциировался только с android платформой, учитывая что на следующей неделе состоится TheAndroidShow на тему Jetpack Compose, на котором скорее всего будет анонсирована первая бета-версия.

Всем неравнодушным рекомендую пройти по ссылке и поставить свой голос за петицию. Как нам тогда убедить iOS использовать Compose, если там прямо в пакете будет android?

Факт: Samsung возглавила рейтинг Donktkillmyapp

Samsung возглавила рейтинг производителей устройств, которые наиболее агрессивно убивают приложения в фоне

Все мы знаем про новые ограничения на работу приложений в фоне, которые появляются с каждой новой версией Android устройства. Но производители всегда отличались тем, что делали свои модификации ОС и они более агрессивно останавливали процессы в фоне. Не смотря что Google обещает работать с производителями устройства и унифицировать остановку фоновых процессов, но они также гнут свою линию. И это печально.

В своей последней прошивки на Android 11 отличились настолько что, возглавили рейтинг сайта dontkillmyapp, прыгнув с третьего места на первое, опередив таких лидеров как OnePlus и Huawei. Помимо того что Adaptive Battery работает агрессивнее чем на стоковом Android, теперь на Samsung foreground service по умолчанию не могут захватывать wake lock.

На сайте dontkillmyapp.com вы найдете инструкции, что делать, чтобы приложение не было заблокировано. Вполне возможно она пригодится вашим пользователям для того, чтобы помочь сделать работу приложения стабильным.

Заключение

Это все новости этой неделе. С вас лайк и подписка, а также напишите в комментариях, что вы хотите увидеть в Android 12. Не забывайте про розыгрыш билета на Mobius, условия будут в описании. Каждое новое участие - это дополнительный шанс на билет. На этом у меня всё. Всем хорошего Android! Пока-пока!