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

安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES

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


当前回答

大多数答案都是正确的。另一个原因是

►你的min SDK比设备SDK小。 ►您的设备中有具有相同包名的旧应用程序

其他回答

今天它为我抛出这个错误,因为我有一个最小sdk为28的应用程序,我在一个sdk版本为23的模拟器上点击播放。通常这是不可能的(AS灰色的播放按钮),但今天不是那么多。

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

对于Xamarin用户来说,卸载并不能解决这个问题。问题在于,如果你将目标sdk升级到30+,你需要将密钥存储库文件重新加载到应用中心构建配置中。这将迫使应用中心与v2签署,这是从v30开始要求的。完全归功于这个github问题的评论

另一种得到这个错误的方法是在macOS上使用ant构建,并在应用程序的源树中有一个Finder图标文件(icon \r)。它似乎jarsigner不能处理文件名中的回车,尽管它会声称签名是有效的,如果你-验证APK,它总是导致APK不会安装在设备上。具有讽刺意味的是,谷歌驱动器查找器插件是Finder图标文件的一个很好的来源。

解决方案是在文件集中使用这样的说明符排除违规文件(这些文件在APK中是无用的):

    <exclude name="**/Icon&#13;" />

如果你正在使用模拟器,然后尝试重置它,如果你在移动设备上首先卸载应用程序,然后关闭开发人员模式,然后再打开它,问题将得到解决。