12

我正在使用 android studio 2.2.2 版和 gradle 2.2.2 版开发 Android 应用程序。我正在尝试生成签名的 APK。我执行了使用 Android Studio 生成签名 APK 的常规过程。在那之后,我做了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 的登录。我做错什么了吗?需要一些帮助。

4

1 回答 1

19

Gradle 的 Android 插件以及 Android Studio 2.2 和更高版本默认生成使用 v1(JAR 签名)和 v2 方案(APK 签名方案 v2)签名的 APK。对 v2 签名 APK 的任何修改都会使其 v2 签名无效,Android Nougat (Android 7.0) 和更高版本会验证该签名,因此会阻止在 Android Nougat 和更高版本上安装 APK。

解决方案:

  1. 不要在已签名的 APK 上运行 zipalign - 适用于 Gradle 和 Android Studio 的 Android 插件将为您的发布版本生成已与 zip 对齐的 APK。

  2. 如果您需要运行 zipalign,请在 APK 签名之前执行此操作。请参阅https://developer.android.com/studio/command-line/zipalign.htmlhttps://developer.android.com/studio/publish/app-signing.html#signing-manually

  3. 在您的 build.gradle 文件中禁用 v2 签名。请参阅https://developer.android.com/studio/releases/gradle-plugin.html,特别是 v2SigningEnabled。

于 2017-01-21T20:39:57.390 回答