首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是INSTALL_PARSE_FAILED_NO_CERTIFICATES错误?

什么是INSTALL_PARSE_FAILED_NO_CERTIFICATES错误?
EN

Stack Overflow用户
提问于 2010-05-26 22:58:59
回答 38查看 345.9K关注 0票数 213

我试图通过编辑androidmanifest.xml文件来更改我的默认/main/startup(不管你怎么叫它)活动。我所做的只是更改了android:name属性。然而,这完全破坏了整个应用程序。当我尝试安装时,它会失败并读取。

安装错误: INSTALL_PARSE_FAILED_NO_CERTIFICATES

当我试图将它改回以前的状态时,它仍然给我同样的错误...我做了什么?

EN

回答 38

Stack Overflow用户

回答已采纳

发布于 2010-05-27 00:13:29

您是否直接在.apk文件中编辑了AndroidManifest.xml?如果是这样的话,那是行不通的。

Every Android .apk needs to be signed if it is going to be installed on a phone,即使你不是通过市场安装的。开发工具通过使用开发证书签名来解决这个问题,但.apk仍然是签名的。

它的一种用途是设备可以判断.apk是否为已安装应用程序的有效升级,因为如果是,证书将是相同的。

因此,如果你对你的应用程序做了任何更改,你需要重新构建.apk,以便它得到正确的签名。

票数 71
EN

Stack Overflow用户

发布于 2017-03-29 23:34:41

我发现,当使用错误的签名配置时,现在也会发生此错误。正如here所描述的,Android7.0引入了一种新的签名方案,V2。V2方案对整个APK进行签名,而不是像在V1方案中那样只对JAR进行签名。如果您仅使用V2进行签名,并尝试在7.0版本之前的目标上进行安装,则会出现此错误,因为JAR本身没有签名,并且7.0版本之前的PackageManager无法检测到V2 APK签名的存在。

要与所有目标系统兼容,请选中Android Studio的Generate signed APK对话框中的两个signature version框,确保APK使用两种方案签名,如下所示:

如果只预期7.0个目标,则不需要包含V1签名。

票数 207
EN

Stack Overflow用户

发布于 2012-04-10 12:58:38

我发现这是由我的JDK版本引起的。

我在使用'ant‘时遇到了这个问题,这是由于文档中提到的注意事项:

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

注意:从JDK7开始,默认的签名算法已经更改,要求您在签名APK时指定签名和摘要算法(-sigalg和-digestalg)。

我有JDK7。在我的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就可以在签名时使用这些选项了!

好的,这里是: C:\Program Files\Java\android-sdk\tools\ant\build.xml

            <signjar
                    sigalg="MD5withRSA"
                    digestalg="SHA1"
                    jar="${out.packaged.file}"
                    signedjar="${out.unaligned.file}"
                    keystore="${key.store}"
                    storepass="${key.store.password}"
                    alias="${key.alias}"
                    keypass="${key.alias.password}"
                    verbose="${verbose}" />
票数 54
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2914105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档