安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES
Posted
技术标签:
【中文标题】安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES【英文标题】:Installation error: INSTALL_PARSE_FAILED_NO_CERTIFICATES 【发布时间】:2011-09-11 01:11:10 【问题描述】:冒着重复似乎很常见的抱怨的风险,我认为我对这个错误有很大的变化。
应用程序不会从 Eclipse 安装,这会出现在控制台中:。
LogCat 提供了一些启示:包 com.xxx 在入口 assets/fonts/helvetica_neue.ttf 处没有证书;无视!
意味着设备(或模拟器)认为该特定文件未签名。
为此提出的通常解决方案是: - 重命名有问题的文件。我们已经尝试过了,然后它抱怨下一个文件,然后是下一个,依此类推。 - 添加一个虚拟文件。也试过了。它抱怨新文件,不管它叫什么。 - 编译为高于 android 1.6。我们正在为 2.3 编译。
值得注意的是,这只发生在我们启动单元测试时。我们可以毫无困难地自行安装“真正的”应用程序。我们也在使用 Maven,当然还有 Maven Android 插件。
非常欢迎任何见解或建议,当然,如果我们自己弄清楚,我会发布任何发现。
【问题讨论】:
【参考方案1】:我通过正常调试遇到了这个问题 - 虽然它不可能一直有帮助,但只需转到项目 -> 清理并重建所有内容可能足以清除错误。
【讨论】:
谢谢!这是一个奇怪的错误。这是我第一次遇到它。【参考方案2】:我发现这是由于我的 JDK 版本。我在使用“ant”时遇到了这个问题,这是由于文档中提到的这个 CAUTION:
http://developer.android.com/guide/publishing/app-signing.html#signapp
注意:从 JDK 7 开始,默认签名算法已更改,要求您在签名 APK 时指定签名和摘要算法(-sigalg 和 -digestalg)。
我有 JDK 7。我不能代表你的 Maven,但这可能是同一个问题。在我的 Ant 日志中,我使用 -v 表示详细,它显示了
$ ant -Dadb.device.arg=-d -v release install
[signjar] Executing 'C:\Program Files\Java\jdk1.7.0_03\bin\jarsigner.exe' with arguments:
[signjar] '-keystore'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\release.keystore'
[signjar] '-signedjar'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unaligned.apk'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unsigned.apk'
[signjar] 'mykey'
[exec] pkg: /data/local/tmp/PairFinder-release.apk
[exec] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
我手动签署了 JAR 并对其进行了压缩,但它给出了一个稍微不同的错误:
$ "$JAVA_HOME"/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore release.keystore -signedjar bin/PairFinder-release-unaligned.apk bin/PairFinder-release-unsigned.apk mykey
$ zipalign -v -f 4 bin/PairFinder-release-unaligned.apk bin/PairFinder-release.apk
$ adb -d install -r bin/PairFinder-release.apk
pkg: /data/local/tmp/PairFinder-release.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
641 KB/s (52620 bytes in 0.080s)
我在这里找到了答案。
How to deal with INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES without uninstallation
我只需要卸载它就可以了!
$ adb -d uninstall com.kizbit.pairfinder
Success
$ adb -d install -r bin/PairFinder-release.apk
pkg: /data/local/tmp/PairFinder-release.apk
Success
641 KB/s (52620 bytes in 0.080s)
现在我只需要修改 build.xml 以在签名时使用这些选项!
【讨论】:
我只是第二次查找了这个答案,希望我能给你第二次投票。添加-digestalg SHA1
为我做了!【参考方案3】:
对于那些有这个问题的人......
选择 V1(jar 签名)而不是 V2(完整 apk 签名)
选择 V2 也可能导致此问题。
【讨论】:
【参考方案4】:现在已修复。如果有人发现自己具有相同的独特项目设置和错误,则该解决方案可能具有一定的价值。
问题源于我们在测试项目(包含我们的单元测试的项目)的 POM 中配置资源目录。他们指向正在测试的项目的资源目录。这个设置应该可以工作,所以我猜测这是 Maven Android 插件中的一个错误,导致资源保持未签名。
因此解决方案是删除对外部资源目录的引用(我不能说为什么最初这样做,但删除它们似乎没有不良影响)并以标准方式配置资源目录(作为maven 插件项目原型提供的带有测试的 POM 示例)。
【讨论】:
【参考方案5】:我在使用 MotoDev 3.0.0 时遇到了这个问题
解决方案是删除模拟器并创建一个新的。
其实不用删除旧模拟器,新建一个就可以安装顺利了。
【讨论】:
【参考方案6】:遇到了同样的问题,就是我在Android目标配置下被配置为使用App Store而不是debug,而且我还没有设置app store。切换回调试,一切正常。
【讨论】:
【参考方案7】:在 Java 偏好应用中选择 Java SE 6
【讨论】:
以上是关于安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES的主要内容,如果未能解决你的问题,请参考以下文章
安装SQLserver 2008安装程序未能安装Windows PowerShell,错误代码为-214512329
安装SQLserver 2008安装程序未能安装Windows PowerShell,错误代码为-214512329