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

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

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

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


当前回答

在这种情况下,你已经从谷歌Play安装了应用程序的旧版本,你想测试应用程序的新版本:

打开谷歌播放控制台 将你的应用的新版本上传到Alpha / Beta,但不要发布它!

你现在可以下载衍生的apk:

现在就在你的手机上安装下载的衍生apk。 衍生的apk由谷歌Play使用Android Studio生成的发布应用程序的不同密钥重新签名。

其他回答

对我来说,原因是我在同一部手机上使用不同的构建变体进行了多个构建:

所发生的事情是,其中一些构建是由我构建的,另一个是由另一个开发人员发给我的。试图安装开发人员,而我有其他构建(由我构建)导致上述错误。

所以修复很简单:删除我手机上的所有构建(不管构建变体)..然后安装我的同事发来的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

你应该将其保存为Debug而不是release,检查两个JAR标志,并允许从你下载的地方安装应用程序(WhatsApp, chrome等…)

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

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

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

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

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

debug {
    minifyEnabled false
}