Android: Huawei без Google Play, динамические обновления и советы Сноудена

Сегодня в выпуске: рассказ о том, как Huawei Mate 30 обходится без Google Play, статья о динамических обновлениях Android, советы Эдварда Сноудена по использованию телефона, руководство по созданию анимаций при использовании реактивных фреймворков, объяснение типов Unit, Nothing, Any в Kotlin, заметка о новой функции View Binding в Android Studio, обзор инструментов повышения производительности приложения. А также: подборка инструментов пентестера и библиотек для разработчиков.

Почитать

Huawei Mate 30 без Google Play

The challenges Huawei faces getting Google apps on the Huawei Mate 30 — хорошая статья о том, как Huawei может выйти из ситуации, когда флагманы компании (линейка Huawei Mate 30) не могут поставляться на рынок с предустановленными приложениями и сервисами Google.

Чтобы иметь возможность установить на свои смартфоны набор приложений Google (в том числе магазин приложений), компания-производитель должна отправить в Google свой смартфон, где он проходит тесты совместимости Compatibility Test Suite (CTS) и Google Test Suite (GTS), а также подписать соглашение Mobile Application Distribution Agreement (MADA).

Все это открывает перед производителем возможность установить на свои смартфоны ключевые приложения Google (Google Play Store, Google Chrome, Google Maps и т. д.) и необходимый для их работы набор сервисов (Core Services).

Huawei по причине торговой войны США и Китая больше не может подписать новое соглашение MADA с Google, а потому по закону не имеет права предустанавливать приложения Google на смартфоны, продающиеся на территории большинства стран. Также они не могут дать пользователям возможность установить эти приложения самостоятельно, так как ключевые приложения Google (в первую очередь магазин приложений) и набор сервисов должны иметь расширенные права, а значит, быть предустановлеными в системный раздел.

Поначалу казалось, что у Huawei есть выход. Дело в том, что в прошлом они (а также компания Xiaomi и другие китайские производители) уже научились обходить такие ограничения. Трюк состоит в том, чтобы предустановить в систему только набор сервисов Google и добавить разрешения для приложений Google в общесистемный файл разрешений. В таком случае установленные из сторонних источников приложения Google автоматически получат нужные разрешения и будут полностью работоспособны. Осталось только дать пользователям какой-то инсталлятор для автоматической доустановки маркета и всего остального софта.

Судя по всему, в данном случае трюк осуществить не получилось, но выход все равно нашелся. Это кастомный инсталлятор сервисов Google lzplay, который может предустановить на смартфоны Huawei все необходимые сервисы и сам магазин приложений. При этом сообщение «Device is uncertified» на смартфоне не появляется, а это значит, что Google добавила Mate 30 в белый список сертифицированных устройств, несмотря на бан Huawei.


Динамические обновления Android

Google is expanding Android 10’s DSU feature to let you try OTAs from OEMs without committing to the update — статья о расширении функции Dynamic System Updates в Android 10/11.

Функция Dynamic System Updates (DSU) появилась в третьей бета-версии Android 10 как ответ на необходимость временной установки тестовых версий ОС, при которой не затрагивается основная версия Android, установленная на смартфон. DSU базируется на технологии Dynamic Partitions, которая позволяет «сдвинуть» раздел data и создать в освободившемся месте новые разделы system и data, которые будут использованы для установки еще одной прошивки рядом с основной.

В финальной версии Android 10 DSU доступен в смартфонах линейки Pixel, но только для так называемых GSI-образов ОС (Generic System Image), которые выпускает сама Google на базе AOSP. Но совсем недавно в AOSP появился коммит, по содержимому которого можно понять, что функциональность DSU вскоре будет расширена для поддержки тестовых прошивок производителей смартфонов.

Что из этого всего следует? Во-первых, это не способ организовать мультизагрузку на смартфоне (по аналогии с MultiROM). Это лишь способ тестирования прошивок, после перезагрузки происходит автоматический откат к основной прошивке. Во-вторых, это действительно удобный способ для тестирования бета-версий прошивок без необходимости удалять основную прошивку.

Еще в Google анонсировали поддержку так называемой разметки «диска» Virtual A/B. Это развитие идеи разметки A/B, появившейся еще в Android 8 и предполагающей существование сразу двух разделов system. В одном разделе установлена текущая версия прошивки, в другой устанавливается обновление. После перезагрузки они меняются местами.

Разметка A/B позволяет устанавливать обновления прошивки в фоне и защищает от ситуаций, когда обновление может окирпичить смартфон (в этом случае смартфон автоматически загрузится со «старого» раздела system). Однако кроме самой Google мало какой производитель захотел использовать такую разметку ввиду банальной экономии пространства в памяти устройства. Virtual A/B позволяет решить эту проблему путем создания временного раздела system, который может быть удален после удачного обновления.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Евгений Зобнин: @ezobnin Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.