Если я подпишу AAB с помощью jarsigner, нужно ли мне подписывать APKS, а также полученные APK перед развертыванием?

В Azure DevOps я разархивирую aab, изменяю некоторые файлы (значки, ресурсы, манифест) в aab и использую bundletool для сборки модулей. Мои следующие шаги:

  1. Используйте jarsigner для подписи aab
  2. Используйте bundletool для создания APKS и передачи информации о подписи.
  3. Разархивируйте/распакуйте в него универсальный APK
  4. Используйте jarsigner, чтобы подписать APK и отправить его на тестовые устройства.

Я предполагаю, что подписываю больше раз, чем необходимо, поскольку я делаю это 3 раза (AAB, APKS и APK). Какая подпись необходима? Для каждой задачи подписи требуется менее 10 секунд, но каждая задача добавляет дополнительную сложность, и я хотел бы, чтобы это было как можно проще для повторного использования.


person valdetero    schedule 06.08.2020    source источник


Ответы (2)


Вот краткое изложение необходимой подписи:

Набор приложений (.aab)

Требуется подпись (с помощью jarsigner) перед загрузкой в ​​Play Store.

Подписание не требуется во время разработки или тестирования.

Набор APK (.apks)

Подписание не нужно. Всегда.

APK (.apk) (внутри набора APK)

Всегда требуется подпись (если только вы не собираетесь устанавливать эти APK).

Bundletool будет автоматически подписывать им APK-файлы, которые он генерирует в .apks, при передаче флага --ks, поэтому большинству разработчиков никогда не придется делать это самостоятельно.

Однако вы упомянули, что изменяете некоторые файлы: если вы изменяете APK, вам нужно будет подписать их снова (в идеале с помощью apksigner, а не jarsigner — это более безопасно и ускоряет установку APK).

person Pierre    schedule 06.08.2020
comment
Вы сказали, что APK Set никогда не нужно подписывать, но вы упомянули, что bundletool сделает это, если вы пройдете --ks. Это то, что я делаю на шаге 2. - person valdetero; 07.08.2020
comment
файлы, которые я изменяю, находятся в aab, а не в APK/S. После того, как я восстановлю AAB, я закончу все изменения. - person valdetero; 07.08.2020
comment
Bundletool подписывает APK (во множественном числе от APK, т. е. файлы .apk), он не подписывает набор APK (т. е. файл .apks). Если вы изменяете только файлы в AAB и передаете флаг --ks в bundletool, то единственное, что вам нужно сделать, это подписать AAB перед загрузкой в ​​Play Console. Кроме того, файлы .apk уже подписаны, а файл .apks подписывать не нужно. Я надеюсь, что это проясняет это. - person Pierre; 07.08.2020
comment
Если я уже подписал AAB, почему я должен подписывать APK во время выполнения bundletool build_apks (для развертывания на устройстве)? Я категорически НЕ хочу распространять хранилище ключей с AAB (даже среди тестировщиков в нашей компании)! - person Programmer1234; 08.12.2020
comment
Подписание AAB только для того, чтобы Play Console могла вас идентифицировать. Подписание APK предназначено для платформы Android. Вы не должны распространять AAB. Для тестирования вы можете распространять универсальный APK, набор APK (.apks) или ссылку в магазине Play на версию вашего приложения в тестовой версии. - person Pierre; 08.12.2020

Это пример создания пакета приложений Android с помощью Xamarin и Azure DevOps: https://damienaicheh.github.io/xamarin/azure/devops/2020/02/03/generate-android-app-bundle-xamarin-azure-devops-en.html

И эта документация о пакетах приложений Xamarin.Android https://github.com/xamarin/xamarin-android/blob/master/Documentation/guides/app-bundles.md Скажите, что: наборы приложений могут быть подписаны только с помощью jarsigner (не apksigner). Пакеты приложений не должны использовать zipalign. Xamarin.Android должен подписать файл .aab так же, как в настоящее время он делает это для файлов .apk. Файл com.company.app-Signed.aab будет создан в $(OutputPath), чтобы соответствовать нашему текущему поведению с файлами APK.

person Emerson Gonzalez    schedule 06.08.2020