安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES

Phi*_*ons 17 android

冒着重复似乎是一个非常普遍的抱怨的风险,我想我对这个bug有很大的不同.

应用程序不会从Eclipse安装,并且会出现在控制台中:安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES.

LogCat提供了一些照明:包com.xxx在entry assets/fonts/helvetica_neue.ttf没有证书; 无视!

意味着设备(或仿真器)认为此特定文件未签名.

为此提出的通常解决方案是:
- 重命名违规文件.我们已经尝试过,然后它会抱怨下一个文件,然后是下一个文件,依此类推.
- 添加一个虚拟文件.也试过了.它抱怨新文件,无论它叫什么.
- 编译大于Android 1.6.我们正在编译2.3.

值得注意的是,只有在我们启动单元测试时才会发生这种情况.我们可以毫无困难地自行安装"真正的"应用程序.我们也使用Maven,当然还有Maven Android插件.

任何见解或建议都会非常受欢迎,当然如果我们自己想出来,我会发布任何调查结果.

der*_*ann 15

我通过正常调试遇到了这种情况 - 虽然它不太可能一直有所帮助,只需转到Project - >清理并重建所有内容可能足以清除错误.


Chl*_*loe 9

我发现这是由于我的JDK版本.我遇到了'ant'这个问题,这是由于文档中提到的这个注意事项:

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]
Run Code Online (Sandbox Code Playgroud)

我手动签署了JAR并对其进行了zipaligned,但它给出了一个稍微不同的错误:

$ "$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)
Run Code Online (Sandbox Code Playgroud)

我发现这里回答了.

如何在不卸载的情况下处理INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

我只需要卸载它然后它工作!

$ 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)
Run Code Online (Sandbox Code Playgroud)

现在我只需要在签名时修改build.xml以使用这些选项!


Cíc*_*ura 7

对于有这个问题的人......

选择V1(jar签名)而不是V2(完整的apk签名)

选择V2也可能导致此问题.

在此输入图像描述


Phi*_*ons 2

现在这个问题已经解决了。如果有人发现自己有相同的独特项目设置和错误,那么解决方案可能会有一定的价值。

该问题源于测试项目(包含单元测试的项目)的 POM 中资源目录的配置。他们指向正在测试的项目的资源目录。这个设置应该可以工作,所以我猜测这是 Maven Android 插件中的一个错误,导致资源保持未签名状态。

因此,解决方案是删除对外部资源目录的引用(我不能说为什么最初这样做,但删除它们似乎没有不良影响)并以标准方式配置资源目录(以由maven插件项目原型和测试提供的POM)。