我有一个程序在Android模拟器工作。我不时地创建一个签名的。apk,并将其导出到我的HTC Desire进行测试。一切都很好。

在我最新导出的。apk上,当我试图安装。apk时,我得到错误消息“应用程序未安装”。它在模拟器上运行良好。

因为我主要是在模拟器上测试,只是时不时地导出到真正的手机上,我不确定这是什么时候发生的。什么可能的原因,它不安装在物理手机,但运行良好的模拟器?

我已经尝试重新启动电话并删除现有的。apk,并不能解决这个问题。


当前回答

Clearly there are many causes of this problem. For me the situation was this: I had deployed to my nexus 7 (actual device) from within the Android Studio (v1.3.2). All worked fine. I then created a signed apk and uploaded to my Google Drive. After disconnecting my nexus from the usb, I went to the settings/apps and uninstalled my app (App1). I then opened google drive and clicked on my App1.apk and chose to install it (need to ensure you have allowed installation of apks in settings). Then I got the dreaded message "App not Installed"

Solution for me: go back into settings/apps and scroll though all apps and at the bottom was a pale version of my App1 (note the original App1 was at the top in Alphabetical order which was deleted as above). When clicking on the pale version it said "Not installed for this user". (I had set up my nexus to have more than one user). But in the top right corner there is a three dot button. I pressed this and it said "Uninstall for all users". Which I did and it fixed the problem. I was now able to click on App1.apk and it installed fine without the error.

其他回答

当我遇到这个问题时,我的自定义构建工具将ADT与用于iOS的证书一起使用(这当然不是我的第一个猜测,因为除了只有你应该有一个之外,Android证书似乎没有什么特别之处,他们只是RSA-1024证书,甚至自签名也是可以的,至少对于非市场安装)。

如果你尝试了上面所有的答案,没有一个有效,你可能想试试这个:

如果你的构建变量是“调试”,那么你应该在应用程序构建gradle的buildTypes下添加这个,以便应用程序安装到你的设备上:

debug {
    minifyEnabled false
}

在我的情况下,我之前发布的应用程序已经通过另一个密钥签名,所以我已经卸载了它,但在我的测试手机(LG G4 H-818) 2个用户存在,所以之前的应用程序仍然安装在我的手机上,没有正确卸载!所以当我试图重新安装它时,它失败了…

所以我试图改变用户和卸载之前的应用程序,最终应用程序安装正确。

希望这对你将来有所帮助:)

我发现,如果我用compileSdkVersion构建我的应用程序,buildToolsVersion和targetSdkVersion都设置为默认值30在我的构建。Gradle文件,那么应用程序将无法安装在我的手机上。但是,如果我把它们改回版本29,它就可以工作了。问题是,从SDK 30开始,你需要选择V2 jar签名。有关更多信息,请参阅为什么Android SDK 30生成无效的APK文件?

如果应用程序已经安装到或移动到SD卡上,然后连接了USB线,导致SD卡卸载,也会出现“应用程序未安装”错误。

在这种情况下,关闭USB存储或将应用程序移回内部存储可以解决这个问题。