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

安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES

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


当前回答

经过一段时间和多个关于这个主题的在线讨论,我设法修复了我的项目。

它主要考虑的是你放入的最后一个文件(可能是图像或布局)。如果你删除了它们,问题就会解决,你就可以重新构建项目了。

其他回答

在更新的Android Studio 3.2+版本中,如果你试图运行发布安装,并且你没有定义任何签名配置,它将显示错误提示,安装将失败。您需要做的是运行调试版本或正确设置签名配置(V1或V2)。

以我为例,我用MinimumSDK安装了一个比我实际设备的Android版本更大的项目。我用了另一个装置,它解决了。

我的项目MinSDK -> 24

我的手机安卓版本-> 21

发生这种错误的原因有很多。请在事件日志中查看更多详细信息。在我的情况下,我得到这个错误:

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中。

现在再次尝试安装。

在我的例子中,我可以构建并运行发布版本,但是在尝试进行调试构建时得到了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 机构名称:未知 城市或地点:未知 州或省:未知 国家代码:美国

你直接在。apk文件中编辑AndroidManifest.xml了吗?如果是这样,那就行不通了。

每个Android .apk如果要安装在手机上,即使你没有通过市场安装,也需要签名。开发工具通过签署开发证书来解决这个问题,但.apk仍然是签名的。

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

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