我有一个程序在Android模拟器工作。我不时地创建一个签名的。apk,并将其导出到我的HTC Desire进行测试。一切都很好。
在我最新导出的。apk上,当我试图安装。apk时,我得到错误消息“应用程序未安装”。它在模拟器上运行良好。
因为我主要是在模拟器上测试,只是时不时地导出到真正的手机上,我不确定这是什么时候发生的。什么可能的原因,它不安装在物理手机,但运行良好的模拟器?
我已经尝试重新启动电话并删除现有的。apk,并不能解决这个问题。
我有一个程序在Android模拟器工作。我不时地创建一个签名的。apk,并将其导出到我的HTC Desire进行测试。一切都很好。
在我最新导出的。apk上,当我试图安装。apk时,我得到错误消息“应用程序未安装”。它在模拟器上运行良好。
因为我主要是在模拟器上测试,只是时不时地导出到真正的手机上,我不确定这是什么时候发生的。什么可能的原因,它不安装在物理手机,但运行良好的模拟器?
我已经尝试重新启动电话并删除现有的。apk,并不能解决这个问题。
当前回答
这也可能发生在制作主屏幕小部件时,并且您的小部件XML文件在其android:configure属性中指定了错误的Activity。
其他回答
在这种情况下,你已经从谷歌Play安装了应用程序的旧版本,你想测试应用程序的新版本:
打开谷歌播放控制台 将你的应用的新版本上传到Alpha / Beta,但不要发布它!
你现在可以下载衍生的apk:
现在就在你的手机上安装下载的衍生apk。 衍生的apk由谷歌Play使用Android Studio生成的发布应用程序的不同密钥重新签名。
我的问题是,我在设备上有多个用户帐户。我删除了其中一个帐户的应用程序,但它仍然安装在另一个帐户。因此,名称空间发生碰撞,无法安装。卸载应用程序从所有用户固定它为我。
我也遇到了同样的问题,下面是解决方法:转到Manifest文件,确保你有“Debuggable”和“Test Only”属性设置为false。这对我很有用:)
主要针对老款手机
我只是在试图在我的手机上安装一个运行在4.4.2(又名奇巧)上的apk时遇到了应用程序未安装错误,但我的朋友在他的手机上运行在6+上时没有遇到这个错误。我尝试了其他解决方案,比如删除旧的/调试版本的应用程序(因为apk是一个发布版本),清除调试应用程序的数据,甚至清除我所有的缓存数据。然后,最后我意识到我所要做的就是在构建我的签名apk时选择两个签名版本。
之前我只选择了V2(完整的APK签名),但在选择V1 Jar签名之后,我能够成功地在4.4.2设备上安装我签名的APK。
在我的例子中,这是因为Android Studio 3.0设置Android:testOnly="true"在apk上,从版本build Variant构建。
https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html
所以运行。/gradlew assemblerrelease来解决我的问题