这个问题,到现在还没有在网上看见答案,经过一段时间的摸索,查阅官方资料,被我发现了原因.
工作环境:
androidstudio2.3
jdk1.8
问题描述:
打包签名,生成app.apk文件,在安装app.apk时,总是安装不成功,提示如下:
d:/app.apk: 1 file pushed. 41...B/s (2423010 bytes in 0.056s)
WARNING: linker: libdvm.so has text relocations. This is wasti
ng memory and is a security risk. Please fix.
pkg: /data/local/tmp/app.apk
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
分析问题:
查阅互联网,发现方法都不好使,经过查阅官方文档,发现:
以下一段是官方开发文档中的一段:
APK signature scheme v2
Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。在默认情况下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 会使用 APK Signature Scheme v2 和传统签名方案来签署您的应用。
虽然我们建议您对您的应用采用 APK Signature Scheme v2,但这项新方案并非强制性的。如果您的应用在使用 APK Signature Scheme v2 时不能正确开发,您可以停用这项新方案。禁用过程会导致 Android Studio 2.2 和 Android Plugin for Gradle 2.2 仅使用传统签名方案来签署您的应用。要仅用传统方案签署,打开模块级 build.gradle
文件,然后将行 v2SigningEnabled false
添加到您的版本签名配置中:
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file("myreleasekey.keystore")
storePassword "password"
keyAlias "MyReleaseKey"
keyPassword "password"
v2SigningEnabled false
}
}
}
注意:如果您使用 APK Signature Scheme v2 签署您的应用,并对应用进行了进一步更改,则应用的签名将无效。出于这个原因,请在使用 APK Signature Scheme v2 签署您的应用之前、而非之后使用 zipalign
等工具。
如需了解详细信息,请阅读相关的 Android Studio 文档,这些文档介绍了如何在 Android Studio 中签署应用以及如何使用 Android Plugin for Gradle 为签署应用配置构建文件。
分析开发文档,不难发现,这是android7.0的新特性,也是androidstudio默认签名的方式,采用了APK Signature Scheme v2这种签名方式.所以不难解决了.
解决问题:
build→generate signed apk→填写信息,next→输入密码→signature versions勾选V1
然后生成的apk就没有问题了