冒着重复似乎是一个非常普遍的抱怨的风险,我想我对这个bug有很大的不同.
应用程序不会从Eclipse安装,并且会出现在控制台中:安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES.
LogCat提供了一些照明:包com.xxx在entry assets/fonts/helvetica_neue.ttf没有证书; 无视!
意味着设备(或仿真器)认为此特定文件未签名.
为此提出的通常解决方案是:
- 重命名违规文件.我们已经尝试过,然后它会抱怨下一个文件,然后是下一个文件,依此类推.
- 添加一个虚拟文件.也试过了.它抱怨新文件,无论它叫什么.
- 编译大于Android 1.6.我们正在编译2.3.
值得注意的是,只有在我们启动单元测试时才会发生这种情况.我们可以毫无困难地自行安装"真正的"应用程序.我们也使用Maven,当然还有Maven Android插件.
任何见解或建议都会非常受欢迎,当然如果我们自己想出来,我会发布任何调查结果.
我发现这是由于我的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以使用这些选项!
现在这个问题已经解决了。如果有人发现自己有相同的独特项目设置和错误,那么解决方案可能会有一定的价值。
该问题源于测试项目(包含单元测试的项目)的 POM 中资源目录的配置。他们指向正在测试的项目的资源目录。这个设置应该可以工作,所以我猜测这是 Maven Android 插件中的一个错误,导致资源保持未签名状态。
因此,解决方案是删除对外部资源目录的引用(我不能说为什么最初这样做,但删除它们似乎没有不良影响)并以标准方式配置资源目录(以由maven插件项目原型和测试提供的POM)。
| 归档时间: |
|
| 查看次数: |
45670 次 |
| 最近记录: |