【问题标题】:'App not Installed' Error on AndroidAndroid上的“未安装应用程序”错误
【发布时间】:2017-09-28 19:31:56
【问题描述】:

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

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

由于我主要是在模拟器上进行测试,并且只是时不时地导出到真机,我不确定这是什么时候发生的。没有安装在实体手机上但在模拟器中运行良好的可能原因是什么?

我已尝试重启手机并删除现有的 .apk,但无法修复故障。

【问题讨论】:

  • 当您说您已删除现有的 .apk 时,您的意思是您已从手机中卸载了该应用程序?如果没有,请先卸载该应用程序,然后再尝试重新安装。
  • TomS 所说的,运行adb uninstall your.package.name,然后运行adb install /path/to.apk。我不明白为什么那行不通。您是否在签名过程中进行了任何更改?
  • 您是否尝试过直接从连接到计算机的设备中的 eclipse 中对其进行调试,以查看日志是否显示更多内容?
  • 我确实使用手机应用程序管理器中的卸载选项删除了该应用程序。
  • 菲利克斯。我从哪里运行这个 adb 东西?

标签: android android-emulator


【解决方案1】:

主要用于旧手机

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

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

【讨论】:

  • 如果您的手机较旧,请考虑使用此解决方案!我有一个装有 Android 4.4.2 的 Galaxy S4 mini,但我忘记检查“V1 签名”,所以它无法安装在设备中。检查后,apk 会像魅力一样安装。
  • @JoseRamonGarcia 有趣的是我有完全相同的手机和安卓版本哈哈!很高兴它对你有用
  • 谢谢! Android Studio 应该在签署应用程序时提供有关此的更多信息,或者在您不勾选 V1 (Jar Signature) 时更清楚地说明它的作用
  • 当我遇到问题时,我最初使用 v2 签名。然后我只用 v1 签名,然后它工作了。我正在手机上运行 sdk23。
  • 感谢您提及“清除调试应用程序的数据”。这对我有帮助
【解决方案2】:

对我来说,在 Android 9 (API 28) 上,从 Play 商店应用中禁用 Google Play Protect 可以解决问题,并且我能够摆脱 App not Installed 错误。

禁用 Google Play Protect。打开“Play 商店”应用程序 => 点击 在菜单按钮上 => 选择“播放保护”选项 => 禁用选项 “扫描设备是否存在安全威胁”。

【讨论】:

  • 即使当我第一次尝试安装我的应用程序时,播放保护提示我说它无法验证应用程序是否安全,并且我确实按下了“无论如何安装”应用程序仍然无法安装.此覆盖有效
  • 在 Android 8 上也是如此(只是为了完成报告的 7 和 9 之间的差距)。
  • 这很好用。安装 apk 后不要忘记恢复设置。
  • 绝对可笑,但它奏效了。今天早上我已经安装了我的 APK 6 次,每次它都会提示我是否真的想要安装,尽管它没有被 Play 商店识别或其他什么。然后突然它停止提示我,而是决定以无益的信息失败。这让我明白了。
  • 这个,加上删除现有的应用程序,为我解决了这个问题。
【解决方案3】:

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

【讨论】:

  • 是的,它是同一个证书。我想我以前有过一次。我曾尝试删除手机上现有的应用程序,并尝试安装未签名的版本。仍然收到相同的错误消息。
  • 我也有同样的问题(以前的版本和其他证书) - 具体来说,我隐式安装了它以使用调试器。 Revmoving 解决了它(不是你的情况,如下所示,但值得在这里注册)
  • 这篇文章有 30 多个答案。我的建议是,每当您遇到此问题时,请在安装应用程序时观察设备日志。使用亚行日志猫。您将了解安装失败的确切原因。我的问题的日志是“包 com.companyname.appname 签名与以前安装的版本不匹配;忽略!”
  • 我更改了包名。它奏效了。我意识到我已经测试了多个具有相同包名的应用程序,所以出现了错误。
  • 就我而言,我必须卸载以前的版本,重新启动手机,然后安装下一个版本。
【解决方案4】:

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

我的解决方案:返回设置/应用程序并滚动浏览所有应用程序,底部是我的 App1 的苍白版本(请注意,原始 App1 按字母顺序位于顶部,即如上删除)。单击苍白版本时,它显示“未为该用户安装”。 (我已将我的关系设置为拥有多个用户)。但在右上角有一个三点按钮。我按下它,它说“为所有用户卸载”。我做了什么,它解决了这个问题。我现在可以点击 App1.apk 并且安装良好,没有错误。

【讨论】:

  • 有同样的问题。我激活了一个访客帐户,但在删除该应用时,它并未从所有用户中删除。
  • 如果你能提供一些截图,我真的很感激
  • 这真的很有帮助,在我找到这个之前,我安装-卸载了我的应用程序大约 20 次。非常感谢! :-)
  • 如果 StackOverflow 让我们不止一次投票就好了。这个解决方案在大约一年前帮助了我。我赞成并立即忘记了它。今天遇到了同样的问题,它再次帮助了我。试图投票,StackOverflow 说我已经投票了。哦,好吧。
  • 谢谢。我也遇到了这个问题。第一次绝对不明显,卸载该应用程序仅适用于当前活跃用户。为了避免每次都进入设置,我使用命令adb uninstall your.package.name 为所有用户卸载。
【解决方案5】:

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

1.您不能通过传统方式安装带有 android:testOnly="true" 的应用,例如从 Android 文件管理器或从网站下载

2.Android Studio 在从

运行的 APK 上设置 android:testOnly="true"

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

如果您通过从 build out put 和 debug 文件夹复制发送此 apk,它将永远不会安装在设备中。

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

那么你的问题就会解决。

【讨论】:

  • 这 这这就是我的答案。太烦人了,这个简单的事情并没有在程序中公然意识到,或者通过设备上的任何错误消息。谢谢大哥!
  • 对不起,我没有得到解决方案,如果你构建 apk,它将存储在构建输出 -> 调试文件夹中,那么这里有什么区别。
  • Manifest 中的解决方案 android:testOnly="false" 完成了工作!!!!详细信息:三星 s5e、Android 10、签名版 APK、v1 签名。
  • 在 Android Studio 中构建 apk(构建 -> 构建 APS)对我有用。谢谢!
【解决方案6】:

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

【讨论】:

  • 感谢您的提示!在我的情况下,android:exported 被设置为 false 用于启动器活动
【解决方案7】:

对于使用 Android Studio 3 的用户。

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

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

<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)

【讨论】:

  • 谢谢! android:debuggable="true" 导致Error: Avoid hardcoding the debug mode; leaving it out allows debug and release builds to automatically assign one [HardcodedDebugMode]。我尝试了android:testOnly="false"Build &gt; Build Bundl(s) / APK(s) &gt; Build APK(s)Build &gt; Generate SignedBundle APK... 的签名版本为 v1、v2(如顶部屏幕截图所示)。必须先删除以前的应用程序,然后再安装一个新应用程序。
  • 最近遇到这个问题。刚刚添加了 android:testOnly="false" 和 Build -> Build Apk 并完成了。都整理好了。谢谢!无需添加任何其他 android 属性,例如 android:debuggable="true"。
  • testOnly="false" 成功了,谢谢!
【解决方案8】:

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

另一个可能的原因:您更改了启动活动。提示:永远不要对已经发布的应用程序这样做! Android Developers blog 中讨论的原因。

【讨论】:

  • +1 android:name 任何 ActivityServiceBroadcastReceiver 的属性都不能在清单文件中更改。尽管它似乎是您应用中的私有标识符,但它是一个公共 API。
  • 我必须更改我的启动活动 我添加了一个启动屏幕,在其中我必须在开始主要活动之前下载提要。除了将启动画面放在主要活动中之外,您还有其他解决方案吗?
  • 你可以使用 标签来处理它!
【解决方案9】:

在我的情况下,我将我的启动器活动声明为android:exported="false"

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

我最近以 android 12 为目标,不得不将 android:exported 属性放在我的清单组件中,但不知道该设置什么值。将值更改为 android:exported="true" 有效。

【讨论】:

    【解决方案10】:

    我遇到了同样的问题。我没有意识到即使是测试也必须对应用进行签名。

    自签名后,安装正常。

    【讨论】:

    【解决方案11】:

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

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

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

    【讨论】:

      【解决方案12】:

      我遇到了同样的问题,解决方法如下:转到 Manifest 文件并确保将“Debuggable”和“Test Only”属性设置为 false。它对我有用:)

      【讨论】:

      • 不确定“仅测试”是什么意思,但将 debuggable 设置为 true 并签署 apk 对我有用!
      • 对我不起作用。我用过:android:testOnly="false" android:debuggable="false"
      • 你能解释一下吗?我根本没有属性,没有设置真和不假,只是不存在。这条线看起来怎么样?
      【解决方案13】:

      我知道这是一篇旧帖子,但对新用户可能有用。我遇到了同样的问题:我的应用程序在调试时运行良好。当我签署 APK 时,我收到了相同的消息:“未安装应用程序”。

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

      恢复,我的问题是在 JAVA 版本中。感谢神谕!!

      【讨论】:

      【解决方案14】:

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

      【讨论】:

      • 从应用程序管理器中,选择应用程序(将显示但被列为已卸载)选择更多,将出现为所有用户卸载选项。
      【解决方案15】:

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

      【讨论】:

        【解决方案16】:

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

        链接到解决方案Android – App not installed error when installing a signed APK – How to Fix

        【讨论】:

        • 这对我的运行 Android 6 的设备很有帮助
        【解决方案17】:

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

        【讨论】:

          【解决方案18】:

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

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

          【讨论】:

            【解决方案19】:

            在我将手机从 Android Pie 升级到 Android 10 之前,用于在物理手机上进行测试的侧载调试应用程序运行可靠。之后,每次我尝试侧载应用程序时都会出现“未安装应用程序”错误。

            根据我的 AndroidManifest.xml 中的警告,我从...更改...

            <application
                android:name=".App"
                android:allowBackup="true" ... />
            

            到...

            <application
                android:name=".App"
                android:allowBackup="false" ... />
            

            在那之后,我能够侧载我的应用程序——一次。然后,我又遇到了同样的“App not installed”错误。通过将allowBackup 改回true,它再次工作(至少一次)。

            从答案的数量和答案的变化可以看出,这个问题的原因是多方面的。我分享这个以防它帮助其他人。

            【讨论】:

            • 我刚刚尝试将android:allowBackup="true" 设置为android:allowBackup="false",但仍然没有成功。
            • 它说“清单合并失败并出现多个错误”
            【解决方案20】:

            啊啊啊啊! 当正确的设置是 DEBUG SDK 时,我试图安装为 Unsigned Release APK

            还有一个小时。

            【讨论】:

              【解决方案21】:

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

              【讨论】:

              • Huawei P8 Lite,Android 6.0,只有:Advanced / Mem&storage/default location: internal/SDCard 没用。
              【解决方案22】:

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

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

              通过Eclipse导出apk,右击Android项目Android Tools>Export Signed Application Package,然后给出keystore位置和密码。

              这将创建已签名的 apk,同时将 apk 压缩对齐。并且可以安装。

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

              【讨论】:

                【解决方案23】:

                这个问题我也解决了,

                问题是我两次声明了我的主要活动, On 作为要加载的第一个活动,我还为它指定了一个意图过滤器 我再次在它下面再次声明它。

                请确保您没有两次声明您的活动。

                【讨论】:

                • 如果您在Manifest.xml 文件中声明您的活动两次,则会显示编译错误,除非您有相同名称但在不同包中的相同活动但是这对我不起作用,因为我检查了所有内容.
                【解决方案24】:

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

                <application
                    android:permission="android.permission.WRITE_EXTERNAL_STORAGE"
                    android:label="@string/app_name"
                    android:icon="@drawable/ic_launcher"
                    android:testOnly="false"
                    android:debuggable="true">
                

                为我解决的问题是将权限标签更改为单独的标签,如下所示:

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

                【讨论】:

                  【解决方案25】:

                  显然,这也可能是由于在安装 APK 之前重命名它造成的。我想通过缩短文件名来减少用户从我们的网站获取应用程序所需的打字量。之后,他们无法安装它。

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

                  【讨论】:

                  • 我想在我第一次安装的时候我改了名字。现在默认(app_release.apk)不安装。也许我会尝试改变它......嗯。
                  【解决方案26】:

                  使用 Android Studio,我之前安装了 APK 的未签名调试版本(Build > Build APK),并且必须在安装签名版本之前将其卸载(Build Variants > Build变体:发布构建 > 生成签名的 APK)。

                  【讨论】:

                  • 我刚刚在同一个问题上浪费了两个小时。我的应用程序显示版本,例如。 “3.5.6”,但不显示它是调试版还是发布版。我一直在摆弄许多不同的文件并且忘记了我在哪里,并尝试使用 Release apk 更新 Debug apk。我认为 Android 曾经显示“文件签名冲突”之类的消息,但现在(Pie,9.0)您只会收到“未安装应用程序”,无法找到原因。惨痛的教训!
                  【解决方案27】:

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

                  android.injected.testOnly=false
                  

                  【讨论】:

                  • 我认为这是解决此类问题的终极方法
                  【解决方案28】:

                  检查 Android 版本。

                  如果您正在安装非市场应用,并且版本不兼容,您将收到此错误。

                  例如:针对 2.3.4 的应用程序 你的设备是 2.2 然后你会得到这个错误。

                  【讨论】:

                  • 我在 gradle 配置文件中的哪个位置看到了目标版本的 android?我在build.gradle 和android 清单文件中都没有看到它。除非compileSdkVersion(值23)或minSdkVersion(16)或targetSdkVersion(22)以某种方式指向所需的设置。我的 Galaxy 正在运行 android 7.0(并要求更新,但我还不允许)。我没有使用 android studio 来构建我的 react-native 应用程序,而是 gradlew assembleRelease
                  【解决方案29】:

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

                  关闭 USB 存储设备或将应用移回内部存储设备可以解决这种情况。

                  【讨论】:

                    【解决方案30】:

                    我也遇到过这个问题。 请尝试此解决方案。确保您的项目的包名与您之前已经安装在手机中的项目不同。我认为他们的名字有冲突。它对我有用。

                    【讨论】:

                    • 这可行,但不是最好的解决方案,因为您最终会安装数百万个应用程序。请参阅上面的其他一些答案。
                    猜你喜欢
                    • 2012-06-11
                    • 2015-06-27
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多