【问题标题】:Installation error: INSTALL_PARSE_FAILED_NO_CERTIFICATES安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES
【发布时间】:2011-09-11 01:11:10
【问题描述】:

冒着重复似乎很常见的抱怨的风险,我认为我对这个错误有很大的变化。

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

LogCat 提供了一些启示:包 com.xxx 在入口 assets/fonts/helvetica_neue.ttf 处没有证书;无视!

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

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

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

非常欢迎任何见解或建议,当然,如果我们自己弄清楚,我会发布任何发现。

【问题讨论】:

    标签: 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

            【讨论】:

              猜你喜欢
              • 2017-07-10
              • 2020-02-27
              • 2021-10-26
              • 1970-01-01
              • 2020-02-14
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多