我有一个程序在Android模拟器工作。我不时地创建一个签名的。apk,并将其导出到我的HTC Desire进行测试。一切都很好。
在我最新导出的。apk上,当我试图安装。apk时,我得到错误消息“应用程序未安装”。它在模拟器上运行良好。
因为我主要是在模拟器上测试,只是时不时地导出到真正的手机上,我不确定这是什么时候发生的。什么可能的原因,它不安装在物理手机,但运行良好的模拟器?
我已经尝试重新启动电话并删除现有的。apk,并不能解决这个问题。
我有一个程序在Android模拟器工作。我不时地创建一个签名的。apk,并将其导出到我的HTC Desire进行测试。一切都很好。
在我最新导出的。apk上,当我试图安装。apk时,我得到错误消息“应用程序未安装”。它在模拟器上运行良好。
因为我主要是在模拟器上测试,只是时不时地导出到真正的手机上,我不确定这是什么时候发生的。什么可能的原因,它不安装在物理手机,但运行良好的模拟器?
我已经尝试重新启动电话并删除现有的。apk,并不能解决这个问题。
当前回答
我的问题是,我在设备上有多个用户帐户。我删除了其中一个帐户的应用程序,但它仍然安装在另一个帐户。因此,名称空间发生碰撞,无法安装。卸载应用程序从所有用户固定它为我。
其他回答
就我而言,这是因为我使用的是支持库28的alpha版本。看起来谷歌将这些预发布版本标记为testOnly。如果你真的想这样发布(例如,你想像我一样推出一个内部测试),你可以将这一行添加到你的gradle中。属性文件:
android.injected.testOnly=false
我遇到了类似的问题,这是因为我试图在使用相同apk的先前版本的手机上安装apk,而两个apk没有使用相同的证书进行签名。我的意思是,当我使用相同的证书时,我能够覆盖以前的安装,但当我在不同版本之间更改证书时,安装就不可能了。您是否使用相同的证书?
我今天遇到了类似的问题,起初我以为是我的sd卡损坏了它。我在许多运行android 4.4及更高版本的设备上尝试了它,但它一直带来同样的问题。经过一些谷歌和研究,我意识到我没有选择v1 jar签名,这是设备比android 7.0牛轧糖,所以我应用了这两个签名,通过选择两个复选框,并生成了一个签名的apk,它工作。
链接到解决方案Android -应用程序未安装错误时,安装签名APK -如何修复
打开AndroidMainfest,然后在应用程序标签中添加verionCode, versionName,并确保debug able等于false:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="...">
<application
...
android:debuggable="false"
android:versionCode="1"
android:versionName="1.0"
tools:ignore="HardcodedDebugMode">
...
</application>
然后打开构建。gradle (module:app)确保verionCode, versionName退出和minsdk <=您的移动sdk:
defaultConfig {
...
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
...
}
查阅资料来源:https://developer.android.com/studio/publish/
https://developer.android.com/studio/publish/preparing &
https://developer.android.com/studio/publish/versioning &
和https://developer.android.com/studio/publish/app-signing
如果你尝试了上面所有的答案,没有一个有效,你可能想试试这个:
如果你的构建变量是“调试”,那么你应该在应用程序构建gradle的buildTypes下添加这个,以便应用程序安装到你的设备上:
debug {
minifyEnabled false
}