我试图通过编辑androidmanifest.xml文件来改变我的默认/main/startup(不管你叫它什么)活动。我所做的只是改变了android:name属性。然而,这完全破坏了整个应用程序。当我试图安装它失败和读取。
安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES
当我试图把它改变回以前的状态时,它仍然给我同样的错误…我做了什么?
我试图通过编辑androidmanifest.xml文件来改变我的默认/main/startup(不管你叫它什么)活动。我所做的只是改变了android:name属性。然而,这完全破坏了整个应用程序。当我试图安装它失败和读取。
安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES
当我试图把它改变回以前的状态时,它仍然给我同样的错误…我做了什么?
当前回答
对于Xamarin用户来说,卸载并不能解决这个问题。问题在于,如果你将目标sdk升级到30+,你需要将密钥存储库文件重新加载到应用中心构建配置中。这将迫使应用中心与v2签署,这是从v30开始要求的。完全归功于这个github问题的评论
其他回答
我在JetBrains Rider IDE中遇到了这个问题。
完整的错误
INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl1252907876.tmp/base.apk: Attempt to get length of null array .日志含义
这个问题是使用JDK8造成的。切换到JDK11解决了这个问题。
首先,试着这样做:
去Gradle脚本→build . Gradle (module:app)→然后你必须改变(minSdkVersion)的值。例如,如果您使用26,您可以尝试降低值,如(minSdkVersion 20) 那就试试(现在同步)。
我发现这是由我的JDK版本引起的。
我在使用“ant”时遇到了这个问题,这是由于文档中提到的注意事项:
http://developer.android.com/guide/publishing/app-signing.html#signapp 注意:从JDK 7开始,默认的签名算法已经发生了变化,在对APK签名时需要指定签名和摘要算法(-sigalg和-digestalg)。
我有JDK 7。在我的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进行了签名并对其进行了zip对齐,但它给出了一个略有不同的错误:
$ "$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)
我在这里找到了答案。
如何处理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)
现在我只需要修改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}" />
这是因为之前生成的版本和当前版本在v1(jar签名)和v2(完整的APK签名)之间的签名版本有冲突,
在生成签名APK对话框中修正正确的签名版本
大多数时候,这个错误的解决方案非常简单:
卸载apk 清理Android项目 构建Android项目 安装/运行apk