我试图通过编辑androidmanifest.xml
文件来更改我的默认/main/startup(不管你怎么叫它)活动。我所做的只是更改了android:name
属性。然而,这完全破坏了整个应用程序。当我尝试安装时,它会失败并读取。
安装错误: INSTALL_PARSE_FAILED_NO_CERTIFICATES
当我试图将它改回以前的状态时,它仍然给我同样的错误...我做了什么?
发布于 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
,以便它得到正确的签名。
发布于 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签名。
发布于 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}" />
https://stackoverflow.com/questions/2914105
复制相似问题