2011-06-08 251 views
15

冒着重复看似非常常见的抱怨的风险,我想我在这个bug上有很大的变化。安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES

该应用程序不会从Eclipse安装,而是出现在控制台中:安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES。

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

意味着设备(或模拟器)认为该特定文件未被签名。

为此提出的常用解决方案是:
- 重命名有问题的文件。我们已经尝试过,然后抱怨下一个文件,然后下一个文件,等等。
- 添加一个虚拟文件。试过了。它抱怨新文件,不管它叫什么。
- 编译超过Android 1.6。我们正在编译2.3。

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

任何见解或建议将是非常受欢迎的,当然,如果我们自己弄清楚,我会发布任何调查结果。

回答

2

现在已修复。如果有人发现自己具有相同的独特项目设置和缺陷,解决方案可能具有一定的价值。

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

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

1

我有这个问题与MOTODEV 3.0.0

解决的办法是删除仿真器和创建一个新的。

实际上,您不需要删除旧的模拟器,只需创建一个新的模拟器并安装即可顺利进行。

9

我发现这是由于我的JDK版本。我是有这个问题,“蚁族”,并在文件中提到这一警告是因为:

http://developer.android.com/guide/publishing/app-signing.html#signapp

Caution: As of JDK 7, the default signing algorithim has changed, requiring you to specify the signature and digest algorithims (-sigalg and -digestalg) when you sign an APK.

我有JDK 7,我不能为你的Maven说话,但它可能是同样的问题。在我的蚂蚁的日志,我用-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和zipalign处理它,但它给了一个稍微不同的错误:

$ "$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以在签名时使用这些选项!

+0

我刚看了这个答案第二次,希望我能给你第二个upvote。添加'-digestalg SHA1'为我做了! – Luc 2016-07-03 18:18:29

14

我通过正常的调试遇到了这种情况 - 虽然它不可能一直有帮助,但只需进入项目 - >清理并重建所有内容就足以清除错误。

+0

这解决了我的问题。 – xori 2012-12-01 19:59:30

+0

这并没有解决我的问题。 – fobbymaster 2016-06-28 15:16:24

0

选择Java SE 6中的Java应用程序优先

1

有同样的问题,这是我配置了Android的目标配置下使用,而不是调试应用程序商店,而我还没有成立应用商店呢。切换回调试,这很好。

1

对于这个问题...

选择V1(JAR签名),而不是V2(全APK签名)

选择V2也可能导致这个问题。

enter image description here