Android подписывает apk подпись V2

Я разрабатываю приложение для Android, используя Android Studio версии 2.2.2 и Gradle версии 2.2.2. Я пытаюсь создать подписанный APK. Я выполнил обычный процесс создания подписанного APK с помощью Android Studio. После этого я сделал Zipalign процесс. сгенерированный APK отлично работает на Android ниже 6. Но в случае Android N при установке APK появляется следующая ошибка:

    Failed to install C:\Users\User\AppData\Roaming\Skype\My Skype Received Files\ap
p-dev3-release_zipalign.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Fail
ed to collect certificates from /data/app/vmdl25816781.tmp/base.apk: META-INF/CE
RT.SF indicates /data/app/vmdl25816781.tmp/base.apk is signed using APK Signatur
e Scheme v2, but no such signature was found. Signature stripped?]

В соответствии с документом Android Studio 2.2 он самостоятельно позаботится о подписи V1 и V2. Я делаю что-то не так? Нужна помощь.


person nilkash    schedule 30.12.2016    source источник
comment
stackoverflow.com/questions/15636396/   -  person IntelliJ Amiya    schedule 30.12.2016


Ответы (1)


Плагин Android для Gradle, а также Android Studio 2.2 и новее по умолчанию генерируют APK, которые подписаны с помощью схемы v1 (подписание JAR) и v2 (схема подписи APK v2). Любая модификация APK с подписью v2 делает недействительной его подпись v2, которую проверяет Android Nougat (Android 7.0) и новее, и, таким образом, предотвращает установку APK на Android Nougat и новее.

Решения:

  1. Не запускайте zipalign для уже подписанного APK — Android Plugin для Gradle и Android Studio сгенерирует уже выровненные по zip APK для ваших релизных сборок.

  2. Если вам нужно запустить zipalign, сделайте это до того, как APK будет подписан. См. https://developer.android.com/studio/command-line/zipalign.html и https://developer.android.com/studio/publish/app-signing.html#signing-manually.

  3. Отключите подписывание v2 в файле build.gradle. См. https://developer.android.com/studio/releases/gradle-plugin.html, в частности v2SigningEnabled.

person Alex Klyubin    schedule 21.01.2017
comment
Пункт № 3 может быть уже недействителен, поскольку Android 11 требует, чтобы APK был подписан подписью v2. - person swistak; 25.05.2021