Android может стать еще более похожим на iPhone в плане несвободы. Google объявил об отказе от текущего формата APK и переходе на Android App Bundle (AAB). Новый формат имеет несколько требований, которые значительно затрудняют распространение приложений за пределами Google Play и использование сторонних магазинов приложений. Нововведение начнет действовать с августа 2021 года.
Сегодня приложения для Android распространяются в формате APK, который представляет собой пакет с кодом приложения, графическими и другими ресурсами, а также средствами безопасности. При установке программы в формате APK файл просто копируется в системную папку и добавляется в базу данных установленных программ. Просмотреть содержимое APK можно в любом файловом менеджере, открывающем формат .zip.
При установке APK система сверяет его подпись с подписью уже имеющихся программ. При неверной подписи или если он уже есть – программа не устанавливается.
App Bundle имеет целью сделать приложения «легче», чтобы приложения быстрее загружались и устанавливались. Если APK содержит графику и другие мультимедийные ресурсы для всех размеров экранов, то App Bundle генерируются для разных аппаратных конфигураций.
Каждый App Bundle содержит только те ресурсы, что требует конкретная аппаратная конфигурация. Это делает финальный файл меньше и он быстрее загружается и устанавливается.
Поскольку Android App Bundle отличаются от APK, нельзя просто скопировать файл AAB на смартфон. У них не будет подписи, которая будет генерировать Google Play Store.
Если APK подписывал сам разработчик приложения, то в случае AAB подписывание выполняет Google Play Store. Все новые приложения, загруженные с августа 2021 года, будут подписываться Google.
Новый подход к подписи продвигает блокировку свободного распространения приложений. При этом концентрация частных ключей для подписи приложений в руках Google создает единую точку угрозы. Злоумышленникам достаточно попасть на серверы Google Play, чтобы получить доступ к миллионам частных ключей.
Поскольку Google контролирует создание пакета App Bundle перед финальной загрузкой пользователем, это означает возможность модификации приложений. Google обещает не модифицировать код и не добавлять код, но такая возможность у поискового гиганта будет.
В классических APK программисты Google не могут модифицировать приложения, поскольку это потребует изменение подписи. Ключ для подписи классического APK находится в руках разработчика приложения.
С App Bundles в Google могут незаметно вставить код в приложение и подписать его. В качестве защиты от этого Google представил Code Transparency for App Bundles – это возможность разработчику добавить свой ключ для подписи. Но этот метод имеет ограничения, например, он покрывает только код. Остается возможность модифицировать другие файлы и библиотеки в приложении. Также разработчики должны вручную добавлять Code Transparency к каждому созданному ими приложению. Однако даже при добавлении Code Transparency система Android не проверяет соответствие защищенного кода тому, что есть в приложении.
Переход на App Bundle также лишает разработчиков возможности свободно распространять свои приложения, поскольку они не будут иметь доступа к ключу, которым подписывается программа. Для распространения нужно будет использовать другой ключ.
Пользователи не смогут обновить программу, если они получили ее не из Google Play. Например, Windows 11 получит возможность устанавливать приложения из магазина Amazon Appstore. Некоторые эксперты считают, что через App Bundle разработчикам будет не выгодно публиковать свои приложения в других магазинах, кроме Google Play.