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

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

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

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


当前回答

在我的情况下,我删除无用的权限是不需要的

我只需要一个许可

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

并删除不需要的权限,并开始给出此错误

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />

其他回答

在我的例子中,这是因为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来解决我的问题

使用Android Studio,我之前安装了APK的未签名调试版本(Build > Build APK),在安装有签名的发布版本之前必须卸载它(Build Variant > Build Variant: release, Build > Generate signed APK)。

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

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

debug {
    minifyEnabled false
}

我今天遇到了类似的问题,起初我以为是我的sd卡损坏了它。我在许多运行android 4.4及更高版本的设备上尝试了它,但它一直带来同样的问题。经过一些谷歌和研究,我意识到我没有选择v1 jar签名,这是设备比android 7.0牛轧糖,所以我应用了这两个签名,通过选择两个复选框,并生成了一个签名的apk,它工作。

链接到解决方案Android -应用程序未安装错误时,安装签名APK -如何修复

在我的情况下,我已经声明我的发射器活动为android:exported="false"

<activity android:name=".MainActivity"
            android:exported="false">

我最近瞄准了android 12,不得不把android:exported属性放在我的manifest组件中,但不知道该把什么作为值。将值更改为android:exported="true"有效。