我正在使用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 . 我做错了吗?需要一些帮助 .
1 回答
Gradle的Android插件以及Android Studio 2.2及更新版本默认生成使用v1(JAR签名)和v2方案(APK签名方案v2)签名的APK . 对v2签名的APK进行的任何修改都会使其v2签名无效,Android Nougat(Android 7.0)及更新版本会对其进行验证,从而阻止在Android Nougat和更新版本上安装APK .
解决方案:
不要在已签名的APK上运行zipalign - Gradle的Android插件和Android Studio将为您的发布版本生成已经压缩对齐的APK .
如果您需要运行zipalign,请在APK签名之前执行 . 见https://developer.android.com/studio/command-line/zipalign.html和https://developer.android.com/studio/publish/app-signing.html#signing-manually .
禁用build.gradle文件中的v2签名 . 请参阅https://developer.android.com/studio/releases/gradle-plugin.html,特别是v2SigningEnabled .