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

安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES

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


当前回答

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

我的项目MinSDK -> 24

我的手机安卓版本-> 21

其他回答

也许,您已经将构建变体从调试更改为发布。发布变体需要一个特殊的证书。 你可以在build->菜单下选择build variant... .更改build variant

我发现当使用错误的签名配置时也会出现这个错误。如上所述,Android 7.0引入了一个新的签名方案V2。V2方案签署整个APK,而不仅仅是JAR,就像在V1方案中所做的那样。如果您只使用V2签名,并试图安装在7.0之前的目标上,您将得到这个错误,因为jar本身没有签名,7.0之前的PackageManager无法检测到V2 APK签名的存在。

为了与所有目标系统兼容,请在Android Studio的Generate signed APK对话框中检查两个签名版本框,以确保APK与这两个方案都有签名,如下所示:

如果预期只有7.0目标,则不需要包括V1签名。

我也面临着同样的问题。首先,我使用V2生成构建,并将其安装在运行OS 5.1的移动设备上,我得到了相同的问题。但是build在运行于OS 7.0的平板电脑上运行得很好。所以我用V1 Jar签名生成构建,它在两个设备上都工作得很好。

结论:如果您支持android OS 7.0以下的设备。使用V1 jar签名来生成构建。

您还可以将构建变体更改为Debug,这样应该就可以了

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