【问题标题】:Installation error: INSTALL_FAILED_UID_CHANGED no root安装错误:INSTALL_FAILED_UID_CHANGED no root
【发布时间】:2023-03-24 00:34:02
【问题描述】:

我已经检查了 StackOverflow 中所有其他问题的所有解决方案、cmets 和答案。

几个月来,我一直在运行、编译和调试我的应用程序。但是当我使用 Nexus 玩它时,它突然开始在我的 Eclipse 中出现此消息。

手机:

  • 我没有根!!! (是Nexus,我没有root,其他Stackoverflow问题的答案都需要root执行)
  • 应用程序已卸载,“应用程序”中没有任何痕迹
  • 由于我没有 root 访问权限,我无法访问 /data/data 文件夹、/data/local 或 /data
  • 确实知道将手机重置为出厂设置会解决问题,但说实话,我不能。

日食:

  • 我已经多次清理项目,重启Eclipse,甚至更新它
  • 我无法更改项目的名称(正如一种解决方案所建议的那样),因为这是一个长期项目,我无法更改它
  • 控制台说:

    • 安装错误:INSTALL_FAILED_UID_CHANGED
    • 请查看 logcat 输出以获取更多详细信息。
    • 发布已取消!
  • Logcat 说:

    • 01-05 12:18:19.265:W/ActivityManager(761):未找到要撤销权限的内容提供者:file:///data/local/tmp/MyApp.apk
    • 01-05 12:18:20.855:W/PackageManager(761):无法在 /data/app/com.myapp-1.apk 中安装包
  • 我可以毫无问题地安装、卸载其他 APK/应用程序。所以这与 /data 文件夹/子文件夹中的权限无关

控制台:

  • 如果我尝试卸载(使用 -d 或任何其他参数)应用程序,它会显示:“失败”(因为 adb 在手机中找不到该应用程序)

所以,我没有使用虚拟机/模拟器进行调试。我有一个无根的 Nexus,没有应用程序的痕迹,我无法从 Eclipse 构建应用程序到设备。

谢谢

【问题讨论】:

  • 我现在也有同样的问题。我现在有 2 台设备无法部署到。这曾经发生在我身上;我只能在恢复出厂设置后解决问题。这次我当然不想那样做。
  • 我无法相信恢复出厂设置是解决此类错误的方法。
  • 同意。我仍在寻找解决方案。在那之前,我必须让我的设备恢复正常运行。
  • 您是否修改了应用清​​单中的 android:sharedUserId 字段?如果是这样,我假设你已经阅读了这篇文章:stackoverflow.com/questions/12338242/…
  • 是的anddev84 ...我也试过了。

标签: android eclipse adb


【解决方案1】:

我在我的非根 Nexus 5 中遇到了同样的问题。我设法解决了它没有root访问权限也没有恢复出厂设置

对于这个设备,我设法通过转到Settings -> Storage -> Misc 来解决它,并尝试删除与故障应用程序相关的所有文件(在我的例子中,是从 Android Studio 推送的一个 .apk 和一个 .db 文件)。我还点击了Cached data 来擦除所有应用程序的缓存。

我不知道究竟是哪两件事触发了解决方案。您可能想在擦除缓存数据之前尝试删除 Misc 中的一些文件,因为这似乎不太过分。

似乎有一些先前安装的剩余文件没有被卸载擦除(可能是an issue in the Android installation system)。没有 root 访问权限就无法访问这些文件,因为它们位于 /data/local/ 文件夹下。显然,Nexus 5 的存储工具有权删除该文件夹下的文件。

不知道其他设备有没有类似的存储工具集。

【讨论】:

  • 我将使用的 gradle 版本更改为 'com.android.tools.build:gradle:1.0.0-rc3'
  • clear Misc 为我工作。删除Misc中的所有文件后,一切正常
【解决方案2】:

从 Play 商店下载应用程序将解决此问题。 要继续开发应用程序,请卸载当前安装的应用程序,然后从 eclipse 启动应用程序。

效果很好。

【讨论】:

  • 这是唯一对我有用的解决方案。我认为 Android Studio 中途卸载旧应用程序失败并安装然后从 Play 商店卸载似乎已正确清除任何剩余数据。
【解决方案3】:

这可能看起来很奇怪,但我的尖头发老板刚刚遇到了这个问题,并尝试了我们能想到的一切。由于 INSTALL_FAILED_UID_CHANGED 错误而无法安装。

他卸载了一些其他应用程序(游戏),然后突然安装了。也许是内部卡上的磁盘空间问题?不知道,但是当其他人击中它时值得一试。

【讨论】:

  • 这对我不起作用。在 HTC One M8 (4.4.2) 上无根
  • 我不知道这是如何工作的或发生了什么,但是当我尝试这个并且它工作时,我只需单击一下即可恢复出厂设置。你的点头发老板是最好的
【解决方案4】:

第一次发生这种情况时,我尝试从 eclipse、命令行等进行安装...... 一切都失败了,所以我做了一个恢复出厂设置,然后就可以了。

24 小时后又发生了。

不想再次恢复出厂设置,我又尝试了所有相同的方法,但无济于事。

最后我尝试从应用商店下载我们当前的应用,效果非常好。

然后我用adb重新安装。

因此,如果您在应用商店中有您的应用版本,请尝试安装该版本以在您的手机上获取内容,然后重新安装“adb -d install -r $PACKAGE.apk

希望这对某人有所帮助。

【讨论】:

  • 我尝试了所有其他解决方案,但这在我的 Sony Xperia Z 上无根,谢谢。
  • 我试过同样的事情; Play商店显示:无法安装应用程序消息,错误代码:-24
【解决方案5】:

这(或其他一些魔法)帮助了我:

adb shell pm clear MY_PACKAGE_NAME

【讨论】:

  • 这对我不起作用。刚刚“失败”。在 HTC One M8 (4.4.2) 上无根
  • @KarimVarela 你解决了这个问题吗?得到同样的“失败”(Galaxy S3 4.3)
  • 这对我有用: adb install -l -r .apk -l = forward lock -r = reinstall
  • @Karim Varela:您的解决方案也对我有用 - 最后,在尝试了我在 stackoverflow 上找到的所有其他内容之后。
【解决方案6】:

我可以在不使用 Nexus 5 的情况下解决这个问题。

  • 将您的应用推送到 /sdcard/
  • adb push test.apk /sdcard/
  • adb 外壳
  • adb shell pm install -l /sdcard/test.apk

-l 选项意思是 - pm install:安装一个包到系统。选项: -l:使用 FORWARD_LOCK 安装包。

【讨论】:

  • 不工作,仍然收到Failure [INSTALL_FAILED_UID_CHANGED]
  • 这实际上对我有用,在其他一切都失败后不敢相信。
【解决方案7】:

以下是一些其他可以安全检查/尝试的事情:

  • 确保您的包名 100% 唯一且不与 另一个应用程序。您可以暂时更改它以进行测试。
  • 尝试关闭手机电源,然后重新打开以清除 数据缓存。
  • 尝试对您的设备进行软重置(可能是 与关机/开机相同)。

【讨论】:

  • 对我来说,简单的重启就可以了。之后“adb install package.apk”
【解决方案8】:

尝试删除Settings -> Storage下的缓存数据,这将一次清除所有缓存的应用程序数据,但它可以完成工作(在我的情况下)

【讨论】:

  • 我第一次尝试这个。
【解决方案9】:

这是因为如果您安装了具有相同包名的应用程序。所以尝试删除那个。

【讨论】:

    【解决方案10】:

    我只能通过生根来解决这个问题。我知道你不想那样做,但它对我有用。我下载了 Titanium Backup,然后发现我已卸载的应用程序在 Titanium Backup 的列表中被划掉了。直到我去批量操作然后删除孤立数据之前,我无法摆脱那个被划掉的那个。这让我可以重新安装我的应用,并且运行良好。

    【讨论】:

      【解决方案11】:

      这对我有用:

      adb install -l -r .apk

      -l = 前向锁

      -r = 重新安装

      【讨论】:

      • 没用。我认为数据目录下有损坏的文件。没有root我无法访问。这是错误:失败[INSTALL_FAILED_UID_CHANGED]
      • 不起作用。和其他人一样Failure [INSTALL_FAILED_UID_CHANGED]
      【解决方案12】:

      我遇到了同样的问题。最终对我有用的是将build.gradle 中的applicationId(您的包名)更改为不同的名称,然后重新构建项目,瞧,成功部署。

      导致这种情况的原因是我将现有的 Android Studio 项目复制到了一个新项目中,并且正在处理这个新项目。问题是,我以前从未在我的设备上部署过原始 apk,只是尝试部署应用程序的新副本。

      【讨论】:

        【解决方案13】:

        我使用的设备只是用于测试,所以我只是重置了整个设备。它对我有用。

        【讨论】:

          【解决方案14】:

          这个解决方案对我有用:

          1. 将您的 APK 放入设备的存储/SD 卡

          2. adb shell pm install -l -r "/sdcard/<apk_filename>.apk"

          -l = 前向锁定 -r = 重新安装

          【讨论】:

            【解决方案15】:

            对于无根设备,您需要从设备的应用列表中删除该应用:

            1. 转到“设置”
            2. 转到“存储”
            3. 在第三个选项卡“已下载的应用”中找到您的应用
            4. 你可以从那里删除它

            为我工作!

            【讨论】:

              【解决方案16】:

              在我的情况下,更改 GCM 签名的包名称是可行的。因为它会卸载完整的包。

              For more detailed explination click here

              <permission
                      android:name="com.androidcodelab.sampleproject.permission.C2D_MESSAGE"
                      android:protectionLevel="signature"/>
                 <uses-permission android:name="com.androidcodelab.sampleproject.permission.C2D_MESSAGE"/>
              

              项目的包名改为:

              <permission
                      android:name="com.androidcodelab.xyz.permission.C2D_MESSAGE"
                      android:protectionLevel="signature"/>
              
                  <uses-permission android:name="com.androidcodelab.xyz.permission.C2D_MESSAGE"/>
              

              然后我恢复到实际的包名

              【讨论】:

                【解决方案17】:

                对于 android studio 去 File-> Project Structure -> app -> Flavors 和你的权利一边您会看到 Application Id 字段,只需更改 Application Id,您就可以开始了... :)

                【讨论】:

                  【解决方案18】:
                  1. 转到运行/调试配置。
                  2. 在 Android 应用下删除“应用”。
                  3. 然后在module下添加另一个配置:app

                  【讨论】:

                    【解决方案19】:

                    对我来说,唯一的方法是 root 手机并清除 /data/data/ 目录。以下是步骤:

                    1. 在移动设备上打开网络浏览器
                    2. 打开网站:https://towelroot.com/
                    3. 点击 lambda 符号下载 Towerl Root 并安装
                    4.打开毛巾根应用程序并点击按钮“让它下雨”。如果它说:“设备不兼容”谷歌其他等待根设备。
                    5. 从 Play 商店下载 SuperSU 应用程序
                    6. 从 Play 商店下载终端模拟器应用程序
                    7. 运行终端模拟器
                    8. 在终端模拟器中输入以下命令:

                    su

                    9. 允许终端模拟器的超级用户访问
                    10.在终端模拟器中键入以下命令,将“package_name”替换为您应用的包名:

                    rm -r /data/data/package_name

                    【讨论】:

                      【解决方案20】:

                      我尝试了以上所有方法和 NADA!

                      它对我有用的唯一方法(非根设备)是:

                      1.- 更改项目结构 [Ctrl+Alt+Shift+S]->Flavors:例如Application Id : 'com.example.something' 到 'com.example.somethingxx'。 (与修改 build.gradle 文件相同)

                      2.- 将项目的包名重构为您在应用程序 ID 上使用的 SAME NEW NAME:'com.example.somethingxx'

                      这将确保您在设备上安装新应用...请告诉我!

                      【讨论】:

                      • 我无法更改 ApplicationId 和包名称,因为我已经在 GooglePlay 中发布了一个应用程序,客户使用付费版本。
                      猜你喜欢
                      • 2014-01-20
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-03-28
                      • 2018-05-25
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-09-05
                      • 1970-01-01
                      相关资源
                      最近更新 更多