安装错误: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

Redhat安装程序的错误

JAVA JDK 安装的问题,总是出现错误。

安装Sql SEVER 2008 时出现以下错误了,咋整,解决有赏

安装MyEclipse6.5后出现错误提示