Android上的“App not Installed”错误

'App not Installed' Error on Android

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

在我最新导出的.apk上,当我尝试安装.apk时,收到错误消息"App not installed"。 它在模拟器上运行良好。

由于我主要是在模拟器上进行测试,并且只是每次都出口到真正的手机,我不确定这是什么时候发生的。 它不是在物理手机上安装而是在模拟器中运行良好的可能原因是什么?

我试过重启电话& 删除现有的.apk,不能解决问题。


主要用于较旧的手机

我尝试在我的手机上安装apk时遇到了App not installed错误,该apk运行在4.4.2 aka KitKat上,但是我的朋友在6+以上的手机上没有遇到这个错误。我尝试了其他解决方案,例如删除应用程序的旧/调试版本,因为apk是发布版本,清除调试应用程序的数据,甚至清除所有缓存数据。然后,最后我意识到我所要做的就是在构建我签名的apk时选择两个签名版本。

enter image description here

在我选择V2 (Full APK Signature)之前,但在选择V1 Jar Signature之后,我能够在我的4.4.2设备上成功安装我签名的APK。希望这有助于他人!


对我来说,在Android 9(API 28)上,从Play商店应用程序禁用Google Play Protect起了作用,我能够摆脱App not installed错误。

To disable Google Play Protect. Open"Play Store" application => tap
on Menu button => select"Play Protect" option => Disable the options
"Scan device for security threats".


我有一个类似的问题,这是因为我试图在手机上安装apk与相同apk的先前版本,并且两个apks没有使用相同的证书签名。我的意思是当我使用相同的证书时,我能够覆盖以前的安装,但是当我在版本之间更改证书时,安装是不可能的。你使用相同的证书吗?


显然,这个问题有很多原因。对我来说情况是这样的:我已经从Android Studio(v1.3.2)中部署到我的nexus 7(实际设备)。一切正常。然后我创建了一个签名的apk并上传到我的Google云端硬盘。断开我与nebus之间的关系后,我转到设置/应用程序并卸载了我的应用程序(App1)。然后我打开谷歌驱动器并单击我的App1.apk并选择安装它(需要确保您已允许在设置中安装apks)。然后我收到了可怕的消息"App not Installed"

解决方案对我来说:回到设置/应用程序并滚动所有应用程序,在底部是我的App1的苍白版本(请注意原始App1按字母顺序排在顶部,如上所述删除)。当点击苍白版本时,它说"没有为这个用户安装"。 (我已经建立了我的联系以拥有多个用户)。但是在右上角有一个三点式按钮。我按了这个,它说"为所有用户卸载"。我做了什么,它解决了这个问题。我现在能够点击App1.apk并且安装正常而没有错误。


当我将我的android从2.3.2更新到3.0.1时,我遇到了这个问题。如果是这种情况,IDE将自动考虑以下几点。

1.您无法通过常规方式安装带有android:testOnly ="true"的应用程序,例如来自Android文件管理器或从网站下载

2.Android Studio在运行的APK上设置android:testOnly ="true"

如果你运行你的应用程序直接将设备连接到你的系统,apk将安装并运行没有问题。

如果你通过copy从build out put和debug文件夹发送这个apk,它将永远不会安装在设备中。

解决方案:去构建--->构建APK(s)--->将apk文件共享复制到您的团队

那你的问题就解决了。


我遇到了同样的问题。问题是我的AndroidManifest.xml文件中的主要活动被写了两次。我删除了副本。


如果您在AndroidManifest.xml中声明了两次MainActivity,则会发生这种情况。

另一个可能的原因:您更改了启动活动。提示:永远不要使用已发布的应用程序! Android开发者博客中讨论的原因。


我有同样的问题。我没有意识到即使是测试也必须签署应用程序。

自我签名后,安装得很好。


我知道这是一个旧帖子,但对于新用户可能会有用。我有同样的问题:我的应用程序在debbuging工作正常。当我签署APK时,我收到了相同的消息:"应用程序未安装"。

我修复了卸载我的JDK(我使用的是jdk-6u14-windows-x64)并安装了一个新的(jdk-6u29-windows-x64)。导出后再次签署APK,一切都还可以!

恢复,我的问题是在JAVA版本。谢谢甲骨文!!


我有同样的问题,这里是如何解决它:转到清单文件,并确保您将"Debuggable"和"仅测试"属性设置为false。它对我有用:)


适用于使用Android Studio 3的用户。

Suryanarayana Reddy的答案是正确的,因为它没有说明解决它的步骤,因此。

在应用程序标记下的AndroidManifest.xml中添加testOnly="false"android:debuggable="true",如下所示:

1
2
3
4
5
6
7
8
9
10
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:testOnly="false"
    android:debuggable="true"
    >

然后在AndroidStudio的菜单栏中编辑Build> Build APK(s)


我的问题是:我使用了Debug Apk,它是在我从Android Studio执行Run命令时生成的

解决方案是:不使用此文件,清理项目,然后从Android Studio单击构建>构建APK。然后你可以使用通常文件夹中生成的APK(app / build / outputs / apk / debug /)

安装这样的文件安装没有问题。


我的问题是我在设备上有多个用户帐户。我在1个帐户中删除了该应用,但它仍然安装在其他帐户中。因此命名空间冲突并且没有安装。从所有用户卸载应用程序为我修复它。


如果应用程序未安装,请从SD卡中删除文件.android_secure/smdl2tmpl.asec

如果文件管理器中的文件夹.android_secure为空,请将其从PC中删除。


我也解决了这个问题,

问题是我宣布我的主要活动两次,
作为第一个要加载的活动,我也为它指定了一个intent-filter
再次在它之下,我再次宣布它。

请确保您没有两次宣布您的活动。


通过命令行创建密钥库文件

keytool -genkey -alias key_file_name.keystore -keyalg RSA -validity 1000000000000000 -keystore key_file_name.keystore

通过Eclipse导出apk,右键单击Android项目Android工具>导出签名应用程序包,然后给出密钥库位置&amp;密码。

这将crate签署apk同时apk将zipaligned。并且可以安装。

如果您通过命令行,有时您可能会遇到"应用程序未安装"错误。
(应用程序未安装错误不仅可能发生在使用命令行时。也可能是其他一些原因)


我的问题类似于@Lunatikzx。由于作为属性写入应用程序的错误权限标记:

1
2
3
4
5
6
<application
    android:permission="android.permission.WRITE_EXTERNAL_STORAGE"
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    android:testOnly="false"
    android:debuggable="true">

为我修复的是将权限标记更改为单独的标记,如下所示:

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

我遇到了同样的问题,即App显示为已安装,但在点击图标时无法启动。经过一些头撞,我发现我在AndroidManifest文件中为我的主要启动器活动愚蠢地放置了'android:exported ="false"'....一旦我删除它,应用程序启动正常...


如果您有该应用程序的先前版本,请先尝试删除它,现在我的问题已通过该方法解决。


最后我发现没有成功安装任何应用程序,而不仅仅是我的。我将安装应用程序默认设置从SD卡设置为自动。修好了。


您也可能遇到此问题,因为您的设备制造商未授权使用Google商业应用,例如Play商店,YouTube,Google地图等。请按照以下答案解决问题。


尝试安装应用程序时打开logCat。将其设置为"无过滤器"。搜索"InstallAppProgress"包标识符。如果安装失败,您应该看到"安装错误代码"。就我而言

1
D/InstallAppProgress: Installation error code: -7

在这里,您可以使用此链接查找有关特定错误代码的信息。


我也遇到过这个问题。
请试试这个解决方案。确保项目的软件包名称与之前已安装在移动电话中的项目不同。我认为他们的名字会发生冲突。它适用于我。


查看Android版本。

如果您要安装非市场应用程序和不兼容的版本,您将收到此错误。

例如:申请目标为2.3.4
你的设备是2.2
然后你会得到这个错误。


如果已将应用程序安装到SD卡或移动到SD卡,然后USB电缆已连接,则会导致SD卡卸载,也会出现"应用程序未安装"错误。

关闭USB存储或将应用程序移回内部存储将解决此问题。


制作主屏幕窗口小部件时,也会发生这种情况,并且窗口小部件XML文件的android:configure属性中指定的活动不正确。


显然,这也可能是因为在安装之前重命名了APK。我希望通过缩短文件名来减少用户从我们的网站获取应用程序所需的输入量。之后,他们无法安装它。

一旦我恢复到创建和签署包时使用的原始文件名,我就能够更新已安装的应用程序。


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


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

enter image description here

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

所以修复很简单:删除手机上的所有构建(无论构建变体)..然后安装我的同行发送的apk ..它就像一个魅力


就我而言,这是因为Android Studio 3.0在从release Build Variant构建的APK上设置了android:testOnly="true"

https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html

所以运行./gradlew assembleRelease解决我的问题


在Marsmallow的所有者和访客用户在那里。如果客人安装了相同的应用程序,我们无法在所有者安装相同的应用程序。我修复此删除访客中的应用程序


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

所以我试图更改用户并卸载以前的应用程序,最后正确安装了应用程序。

希望它在将来帮助你:)


在我的情况下,这是因为我使用支持库28的alpha版本。看起来Google将这些预发布版本标记为testOnly。如果你真的想要像这样发布(例如,你想像我一样推送内部测试版),你可以将这一行添加到你的gradle.properties文件中:

1
android.injected.testOnly=false


我有同样类型的错误,这是我的android清单XML文件中的这一行所引起的。

1
android:permission="android.permission.INSTALL_LOCATION_PROVIDER"

我删除了该行,它解决了我的问题。希望这可以帮助


打开AndroidMainfest然后在应用程序标记中添加verionCode,versionName并确保debug能够等于false:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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>

然后打开build.gradle(module:app)确保verionCode,versionName退出,minsdk <=你的手机sdk:

1
2
3
4
5
6
7
8
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


我以各种形式遇到过这个问题,但这次是一个新问题:

在这种情况下,我有供应商名称冲突 - 我的应用程序和我的另一个应用程序中存在相同的提供商名称。


当我遇到这个问题时,我通过删除项目文件夹中的一些非必要文件来修复它,比如密钥库。

事后看来,给人们游戏的关键可能是不好的。


如果您尝试直接从Google云端硬盘安装apk,只需重新启动设备即可解决问题。


我用2种不同的证书签署了应用程序,因此删除旧版本的旧版本,然后重新安装新版本解决了我的问题


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

我只需要1个许可

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

并删除不需要的不需要的权限,并开始提供此错误

1
2
3
<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" />


如果有人遇到此问题,请检查内部版本号。如果您的内部版本号小于已安装的应用内部版本号,则您的应用将无法安装,您将收到"损坏的应用或apk文件"。

要修复它,只需增加您的内部版本号,直到它等于或大于安装的内部版本号。


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


  • 从app> module(项目主模块)中的build> output> apk文件夹中删除.apk文件。
  • 从项目的根目录删除.idea和.gradle文件夹
  • 清理项目。
  • 单击android studio中侧边栏的gradle图标,然后单击同步图标以刷新所有项目。
    现在运行该项目,它应该工作。

  • 我将最新的应用程序版本发布到Playstore时遇到了这个问题。问题是MainLauncher和app快捷方式的变化组合。

    我们添加了一个启动画面,我们的入口点是SplashActivity而不是MainActivity。因此,拥有以前版本并且在其主屏幕上具有应用程序快捷方式的人无法打开该应用程序。它总是说像App not installed吐司。这不会发生在每个发射器上(对我们来说,它在三星上更常见)。

    在幕后,App shortcut应该无缝地更新从MainActivitySplashActivity的入口点。但是,由于某些原因,许多第三方发射器都没有遵守它。修复程序清除了快捷方式并再次添加。

    如果您尚未在Playstore中更新您的应用,请阅读本文。

    在更新启动器活动时要小心。


  • 关闭项目。
  • 删除项目中的.idea文件夹。
  • 在Android工作室中打开此项目。
  • 连接手机并构建它。
  • 现在app已成功安装。

  • 我也遇到了同样的问题。
    在我的应用程序中有服务。
    即使在卸载应用程序后,服务也在后台运行,在强制停止应用程序后,收到一条消息,说明应用程序已卸载。
    然后我安装了应用程序没有任何问题。


    确保考虑以下提示:

  • 您的build variantsFlavors应该相同(安装了应用程序并且新安装了),通常是发布
  • Signature文件必须相同(* .jks文件)
  • 您在build.gradleAndroidManifest中设置的版本与当前版本相比具有更大的价值(建议在build.gradle中设置版本)
  • URL是正确的(没有拼写错误)和服务器可访问(WebService / WebMethod / WIFI正在运行/可用...)
  • 文件已完全下载
  • 文件已正确保存到所需目录中
  • setDataAndType中设置数据和类型是正确的

  • 我通过不首先签署应用程序而不是Maven来修复此问题。我将此添加到我的构建路径中。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        <plugin>
            <groupId>com.jayway.maven.plugins.android.generation2</groupId>
            android-maven-plugin</artifactId>
            <inherited>true</inherited>
            <configuration>
                <sign>
                    <debug>false</debug>
                </sign>
            </configuration>
        </plugin>

    之后我手工签署了我的应用程序:jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore /home/myself/.android/release.keystore myapp-1.0.apk androidreleasekey


    当我安装的设备没有足够的存储空间时,我遇到了"App not installed"错误。删除一些文件允许安装该应用程序。奇怪的是它并没有给我一个"空间不足"的消息。 (注意:我是从"未知"位置手动安装apk。)


    尝试在AndroidManifest.xml中进行此更改:

    • 将debuggable设置为true
    • 签署apk


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

    如果你的构建版本是"debug",那么你应该在app build gradle中的buildTypes下添加它,以便在你的设备上安装应用程序:

    1
    2
    3
    debug {
        minifyEnabled false
    }