Вы собираете своё первое Android-приложение, нажимаете «Скачать» — и вдруг у вас два файла: один заканчивается на .apk, другой на .aab. Какой отправить другу? Какой загрузить в Google Play? Можно ли просто переименовать один в другой?
Коротко: APK нужен для установки, AAB — для публикации в Google Play. Почти всегда вам нужны оба. Объясняем простыми словами почему.
Что такое APK
APK расшифровывается как Android Package. Это файл, который Android фактически устанавливает. Внутри — код приложения, его изображения и макеты, манифест с описанием приложения (название, имя пакета, разрешения) и цифровая подпись, которая подтверждает, кто его собрал.
APK самодостаточен. Его можно скопировать на телефон, нажать на него и установить. Можно приложить его к письму, выложить на сайт или отдать тестировщику. Любое приложение на любом Android-телефоне в итоге представлено одним или несколькими APK, даже если оно установлено из Google Play.
Что такое AAB
AAB расшифровывается как Android App Bundle. Google описывает его как формат публикации: он содержит весь скомпилированный код и ресурсы приложения, но последний шаг — создание и подпись APK — оставляет Google Play.
В этом и есть ключевое различие. AAB нельзя открыть на телефоне и установить. Это пакет, который вы отдаёте магазину, а магазин превращает его в устанавливаемые APK.
Зачем это нужно? Потому что телефоны разные. Бюджетному телефону с маленьким экраном не нужны огромные изображения для планшета, а телефону с испанским языком не нужен ваш японский текст. Из одного бандла Google Play создаёт оптимизированные APK для каждой конфигурации устройства, и каждый телефон скачивает только нужный ему код и ресурсы. Пользователи скачивают меньше, а вам больше не нужно собирать и поддерживать отдельный APK для каждого типа устройств.
Почему Google Play требует AAB
С августа 2021 года новые приложения в Google Play нужно публиковать в виде Android App Bundle. Если сегодня вы создадите новое приложение в Play Console и попробуете загрузить APK, для этого приложения его не примут. Вы загружаете AAB, а дальше Play всё делает сам.
Формат бандла также поддерживает дополнительные функции Play, такие как Play Feature Delivery и Play Asset Delivery, которые позволяют большим приложениям докачивать свои части позже. Для типичного небольшого приложения, собранного из сайта или HTML-файлов, они не понадобятся. Суть просто в том, что AAB — это пропуск в магазин.
Play App Signing и ключ загрузки
Каждое Android-приложение должно быть подписано, и каждое обновление должно быть подписано тем же ключом, что и уже установленная версия. Потеряете ключ — не сможете выпускать обновления для этого приложения. Раньше для небольших разработчиков это был реальный риск, и это одна из главных причин, по которым Google ввёл Play App Signing.
В Play App Signing используются два ключа:
- Ключ подписи приложения. Его хранит Google в своей защищённой инфраструктуре ключей и использует для подписи APK, которые доставляются на телефоны пользователей.
- Ключ загрузки. Этот ключ храните вы. Им вы подписываете AAB перед загрузкой в Play Console, чтобы Google знал, что загрузка действительно от вас.
Самое приятное — что происходит, если что-то пошло не так. Если вы потеряли ключ загрузки или думаете, что он попал к кому-то ещё, вы не теряете доступ к своему приложению. Вы создаёте новый ключ загрузки, экспортируете его сертификат и запрашиваете сброс в Play Console. Новые приложения подключаются к Play App Signing автоматически.
Даже с такой страховкой относитесь к ключу как к ключам от дома вашего приложения. Сделайте резервную копию в надёжном месте, например в облачном хранилище или менеджере паролей, и используйте один и тот же файл ключа для каждого обновления.
Почему APK вам всё равно нужен
Раз Google Play принимает только AAB, может показаться, что APK устарел. Это не так. Есть много задач, с которыми справится только APK:
- Тестирование на своём телефоне. Прежде чем что-то загружать, вы захотите установить приложение и пройтись по всем экранам. APK устанавливается за секунды.
- Передача друзьям, клиентам или коллегам. Не каждому приложению место в публичном магазине. Внутренний инструмент для небольшой команды, приложение с меню для одного ресторана или школьный проект можно просто отправить в виде APK.
- Другие магазины и ваш собственный сайт. Некоторые альтернативные магазины приложений и многие прямые загрузки по-прежнему работают с файлами APK.
- Быстрые проверки перед выпуском. Если тестировщик сообщил об ошибке, вы можете отправить ему исправленный APK за несколько минут, а не ждать проверки в магазине.
Одна важная деталь при распространении APK: когда включён Play App Signing, копия, которую пользователи получают из Google Play, подписана ключом подписи приложения Google, а APK, который вы собираете сами, подписан вашим ключом загрузки. Android считает это разными подписями, поэтому телефон, на который установлен ваш собственный APK, не сможет просто обновить его из Google Play, и наоборот. Для тестировщиков это обычно не проблема: достаточно удалить тестовую версию перед установкой из магазина. Также помните, что Google вводит проверку разработчиков для приложений на сертифицированных Android-устройствах, и это касается APK, распространяемых вне магазина. Об этом мы рассказываем в отдельной статье.
Краткое сравнение
- Установка прямо на телефон: APK — да, AAB — нет.
- Загрузка в Google Play как нового приложения: AAB — да, APK — нет.
- Кто подписывает итоговое приложение, которое устанавливают пользователи: для APK — вы; для AAB в Play с Play App Signing — Google, ключом подписи приложения.
- Размер загрузки для пользователей: APK — один и тот же файл для всех; из AAB Play создаёт APK меньшего размера под каждое устройство.
Как Free HTML to APK даёт вам оба файла
Когда вы собираете приложение в Free HTML to APK, не нужно выбирать один формат, а потом думать, как получить другой. На шаге вывода выберите APK + AAB, и вы получите оба файла из одной сборки:
- подписанный APK, чтобы установить его на свой телефон и отправить тестировщикам, и
- Android App Bundle, подписанный вашим ключом и готовый к загрузке в Play Console, где этот ключ служит ключом загрузки для Play App Signing.
Конструктор на сайте freehtmltoapk.com работает с URL сайта, HTML-файлами, ZIP или папкой. Он бесплатный, не требует аккаунта и не добавляет водяной знак. Можно позволить ему создать ключ подписи за вас или использовать уже имеющийся файл ключа (.jks, .keystore, .p12 или .pfx), если вы обновляете существующее приложение. Если вам удобнее работать в дороге, Android-приложение «HTML to APK: Website to App» собирает приложения так же, прямо на телефоне.
Каким бы способом вы ни пользовались, правило одно: берегите ключ и подписывайте им каждое обновление.
Какой файл вам нужен?
Если вы тестируете или делитесь приложением напрямую, вам нужен APK. Если публикуете в Google Play — нужен AAB. Если делаете и то и другое, как большинство, соберите оба файла и храните их вместе с ключом подписи.
Готовы создать бандл? О том, как его собрать, читайте на странице HTML в AAB, а все шаги от настройки Play Console до первого выпуска описаны в руководстве по публикации в Google Play.