我试图通过编辑androidmanifest.xml文件来改变我的默认/main/startup(不管你叫它什么)活动。我所做的只是改变了android:name属性。然而,这完全破坏了整个应用程序。当我试图安装它失败和读取。
安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES
当我试图把它改变回以前的状态时,它仍然给我同样的错误…我做了什么?
我试图通过编辑androidmanifest.xml文件来改变我的默认/main/startup(不管你叫它什么)活动。我所做的只是改变了android:name属性。然而,这完全破坏了整个应用程序。当我试图安装它失败和读取。
安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES
当我试图把它改变回以前的状态时,它仍然给我同样的错误…我做了什么?
当前回答
如果您添加了签名配置(创建签名密钥并添加到“项目结构”>“模块”>“签名配置”),但忘记在“项目结构”>“构建变量”>“构建类型”>“签名配置”中指出,则可能会抛出此错误。
签名配置字段不应该是空的!(见下图)否则,你会看到
"INSTALL_PARSE_FAILED_NO_CERTIFICATES...APK signature verification failed."
如果尝试安装版本变体,则会出现错误。(或其他具有相同错误配置的变体)
其他回答
对我来说,我忘记将新的签名配置添加到
项目结构->默认配置->签名配置
这是因为之前生成的版本和当前版本在v1(jar签名)和v2(完整的APK签名)之间的签名版本有冲突,
在生成签名APK对话框中修正正确的签名版本
将环境变量JAVA_HOME设置为JDK 5或6(而不是JDK 7)修复了该错误。
在我的例子中,我可以构建并运行发布版本,但是在尝试进行调试构建时得到了INSTALL_PARSE_FAILED_NO_CERTIFICATES错误。
解决方案是删除我的调试。keystore文件,让ADT重新创建它。它显然已经过期了。
一个更好的长期解决方案是显式地创建一个调试。密钥存储库,而不是让ADT创建它。下面是这样做的命令:
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000
当出现提示时,输入这些值:
名字和姓氏:Android Debug 组织单位:Android 机构名称:未知 城市或地点:未知 州或省:未知 国家代码:美国
发生这种错误的原因有很多。请在事件日志中查看更多详细信息。在我的情况下,我得到这个错误:
Failed to commit install session 1278974094 with command cmd package install-commit 1278974094. Error: INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed collecting certificates for /data/app/vmdl1278974094.tmp/0_app-debug: Failed to collect certificates from /data/app/vmdl1278974094.tmp/0_app-debug: Attempt to get length of null array
这可能很愚蠢,但我几个月都找不到答案,而且这种情况只发生在我公司的项目中。如果我创建一个全新的项目,它安装得非常好。
如果你用的是Windows,你安装Java了吗?检查是否有C:\Program Files\Java\ jdk1.8.0_your_version文件夹。
如果没有,请从Oracle官方网站下载JDK。并将值为“C:\Program Files\Java\jdk1.8.0_your_version”的变量JAVA_HOME添加到环境变量中,然后将JAVA_HOME也添加到PATH中。
现在再次尝试安装。