Android INSTALL_FAILED_UID_CHANGED

我一直在使用我的Nexus 4在Android上进行debugging,但是最近我在这里遇到了这个错误。 对这个错误做了一些研究之后,似乎是应用程序没有正确删除的问题。 我正在debugging的应用程序在我的其他Android设备以及仿真器上运行良好,这个错误只发生在我的Nexus 4上。我将设备插入计算机,并试图删除数据/数据文件夹,但我仍然得到同样的问题。 我也检查设置应用程序来检查它是肯定卸载。

有没有人有任何想法如何解决这个问题? 根据一些用户,我需要root权限来正确删除数据/数据,这是真的吗? 还是有另一种方法呢?

有时你也必须卸载数据文件夹。 对我来说,我在com.kikin.cts用户空间中有一个包,在com.kikin.cts也有一个文件夹目录。 保持INSTALL_FAILED_UID_CHANGED ,但删除数据文件夹后,错误消失。

对于根植设备:

运行下面的命令

 adb rm -rf /data/data/<your.package.name> 

对于无根设备:

  1. 更改应用程序的ApplicationId。 请参阅此链接以更改ApplicationId。
  2. 构build并安装应用程序。 应用程序将成功安装,因为它被视为新的应用程序。
  3. 现在卸载这个应用程序。 这将清除数据。
  4. 现在将ApplicationId更改为前一个。
  5. 构build和安装。 魔术..它会安装。

重新启动您的设备,并清除您的项目。 基本上,如果不尝试重新启动,卸载会为你做这个。

你可能介绍了一个导致这个问题的SharedUserID。

我的Nexus 5有根,但没有任何工作,所以我不得不从工作设置运行出厂重置。

对我来说,这个技巧是通过在“开发人员选项”部分取消选中“通过USBvalidation应用程序”来完成的。

我得到了另一个解决scheme为我工作。 您可以更改应用程序的软件包名称 ,以便设备将其识别为不同的应用程序,并且安装成功完成。 可能对那些没有root访问权限并且不想重置设备的人有帮助。

这对我工作:

 adb shell rm -rf /system/app/<package.name> 

从ADB shell中,您可以通过两种方式find解决scheme。 1.保持数据,find解决scheme和解决scheme,而不坚持数据

解决scheme1.是通过命令提示符从ADBpath运行命令adb chown -R UID:UID /data/data/your.package.name

2.的解决scheme是从相同path运行命令adb rm -r /data/data/your.package.name

我的Galaxy Note 3testing设备在过去的几天中遇到了这个问题。 我一直在使用Calabash-Andrdoid,每当install_app方法试图执行时,都会收到一个错误INSTALL_FAILED_UID_CHANGED。 我正在努力解决这个问题,因为我有两个testing设备遇到这个问题。 我尝试了上面的所有内容,包括清空我的/ data / data / app和app.test文件夹。 我甚至删除了Xamarin安装的仪器后端的东西,因为这是我用来开发我的应用程序的平台。 我找不到任何其他手动删除设备。 当我试图在第三台设备上做我的工作,发现一切顺利时,我意识到问题出在设备上。 最后,唯一对我有用的是执行其中一个设备的出厂重置 。 我希望这有帮助。

谢谢, – 沙

以为我会分享这个以防万一它帮助别人…我在eclipse中写了一个新版本的应用程序,并试图在我的手机上运行它,尽pipe我从Google Play商店下载的手机版本稍旧。 Eclipsepopup一个对话框询问我是否乐意卸载现有的手机版本,我同意了。 卸载有缺陷,导致INSTALL_FAILED_UID_CHANGED。

我尝试了大部分在这里build议的事情,没有运气。 我手机上的APK没有任何明显的痕迹,也没有任何可以删除的数据文件,但有些东西阻止我从eclipse上将APK加载到手机上。 我也无法从Google Play下载我以前的beta版testing版 – 下载进行到100%,但之后报告“未知错误”和一个数字(可能是-24)失败。

我很犹豫要重命名我的软件包,因为我已经有了使用旧软件包名称设置的betatesting器和应用内产品,但是我暂时在eclipse中更改了软件包名称,并且能够将新版本安装到手机中,然后下载旧版Google Play版本也是如此。 两个版本都在手机旁边愉快地坐在一起,具有相同的应用程序名称和图标(但在幕后有不同的软件包名称)。 然后,我可以通过将应用程序图标拖动到手机的卸载图标上手动卸载。 手动卸载删除了冲突和修复的eclipse的有缺陷的卸载,所以我只是将我的eclipse包改名为原来的名称,并继续进行。

这比工厂重置或永久包重命名要痛苦得多。 它可能只在错误的来源是eclipse版本和Google Play版本之间的冲突时才起作用,但如果您处于类似的情况,则值得一试。

在大多数情况下, INSTALL_FAILED_DEXOPTINSTALL_FAILED_UID_CHANGED意味着您没有足够的空间来安装应用程序。

从您的设备中删除一些未使用的应用程序,或者至less删除当前版本的应用程序。

 adb uninstall package-name 

在极less数情况下,应用程序数据可能存在问题。 你有两个select,取决于你的设备是否根源

无根

出厂重置Settings -> Backup and reset -> Factory data reset (至less对于三星S5)

扎根(或模拟器)

 adb shell "rm -rf /data/data/package-name" 

好的,所以我的LG NEXUS 4植根于此解决scheme:(

  • 确保你有工作的应用程序apk签名或无符号的地方)

  • 你从你的手机上卸载这个文件(如果当然存在)

假设它是: app-debug-unaligned.apk

现在在控制台中写下:

 adb push app-debug-unaligned.apk /sdcard/ adb shell su rm -fr /data/local/tmp/app-debug-unaligned.apk rm -fr /data/data/app-debug-unaligned.apk 

现在退出adb并打电话

 adb shell su -c "pm install /sdcard/app-debug-unaligned.apk" 

加工?

以下是现有答案未涵盖的内容。 这在模拟器上发生在我身上。 如果我重置用户数据,我第一次得到INSTALL_FAILED_DEXOPT,但在此之后INSTALL_FAILED_UID_CHANGED。 我发现rm -r /data/data/com.foo.bar足以重置到第一个状态。

在我的情况下,罪魁祸首是导致dexopt失败的java方法名称。 密切关注logcat中的内容。 这是什么给了它:

 I/PackageManager( 1275): Running dexopt on: com.foo.bar E/dalvikvm( 2857): Invalid name: '__jni_setLocation' E/dalvikvm( 2857): Trouble with item 14787 @ offset 0x43b68 E/dalvikvm( 2857): Cross-item verify of section type 0005 failed E/dalvikvm( 2857): ERROR: Byte swap + verify failed E/dalvikvm( 2857): Optimization failed W/installd( 941): DexInv: --- END '/data/app/com.foo.bar-1.apk' --- status=0xff00, process failed E/installd( 941): dexopt in='/data/app/com.foo.bar-1.apk' out='/data/dalvik-cache/data@app@com.foo.bar-1.apk@classes.dex' res=65280 W/PackageManager( 1275): Package couldn't be installed in /data/app/com.foo.bar-1.apk 

我不能告诉你为什么dexopt不喜欢某些方法名称,但这是问题所在。

只要卸载应用程序本身(不是数据文件夹),然后重新安装它,应该没事的。 Android的抱怨,因为你可能以前debugging过另一台电脑的应用程序。

针对非根设备的解决scheme。 转到应用程序pipe理器并卸载名为“Selendroid”的应用程序,然后重试。 这个解决scheme适用于我。

我解决这个问题,也许它会工作的人。

我正在重新启动我的手机,然后删除更多的应用程序。 并再次尝试安装,这是工作!

也许问题即将存储。 我不知道为什么,但现在是工作。 祝你好运! (对不起,英文不好)

使用

adbshell

去壳。
然后运行命令如下:

rm -rf / data / data /包的名称

请使用您自己的软件包名称重新填写软件包名称,例如com.map.map

对于任何人从他们的计算机运行Junit风格的testing,并得到这个错误,而控制台告诉我,我的应用程序有一个问题(打包格式为“com.myapp.stuff”),真正的问题是我的testing代码包 ,如果您正在设备上运行,则会以“com.myapp.stuff.test”的包名称的forms安装为一个单独的应用程序。 使用应用程序pipe理器删除testing代码“应用程序”,并删除我的实际应用程序解决了我的问题。 我发布这个答案在这里拯救别人一个“杜”时刻。

Mediacom设备上的同样问题,首先是a

 $ adb install -r platforms/android/out/android-debug-unaligned.apk 3958 KB/s (22887489 bytes in 5.647s) pkg: /data/local/tmp/android-debug-unaligned.apk Failure [INSTALL_FAILED_DEXOPT] 

那么非常执着

 $ adb install -r platforms/android/out/android-debug-unaligned.apk 4949 KB/s (22887489 bytes in 4.515s) pkg: /data/local/tmp/android-debug-unaligned.apk Failure [INSTALL_FAILED_UID_CHANGED] 

做一个工厂重置没有改变dynamic(我有两个错误,依次)。

  • 安装与不同的ID工作的相同的应用程序
  • 安装与以前的ID不同的应用程序不

生根不是一个选项,我的解决scheme是一个caching擦拭:现在有问题的应用程序ID工作正常,我没有出厂重置(再次)。

希望它有帮助

我删除了/data/data/my.package.name/data/app/my.package.name.apk ,问题仍然存在。

但是我发现一个文件夹/ /data/user/0/my.package.name ,删除它,问题解决。

对我来说,还有一点点。 只是删除/data/data/appfolder没有帮助。

另外的原因是我的外部库没有包含在.apk文件中,因为文件夹的名字是lib,而不是libs 。 这在apk安装之后导致了[INSTALL_FAILED_DEXOPT] ,然后是[INSTALL_FAILED_UID_CHANGED]

所以在这种情况下更改libs文件夹名称为我工作。

我发现了一个解决scheme,可以在非根设备和仿真器上运行。 虽然无法直接删除非根设备上的数据文件夹,但可以使用pm命令来执行此操作:

  1. 运行adb shell
  2. 运行pm uninstall <app name> (即com.example.myapp)
  3. 运行pm uninstall <test app name> (即com.example.myapp.test) – 如果之前没有安装testing应用程序,您可能会收到一个错误。

看来,由于某种原因,从Android UI卸载应用程序时,这不起作用(可能不会删除数据文件夹),但是当通过pm命令卸载它的工作。

尝试在“Nexus 5”和“OnePlus One”上。

这显然是由于卸载不当(可能是由于电缆连接错误)。

解决scheme从Play-Store下载SDMaid ,并删除尸体文件(垃圾文件)。 重新运行应用程序。 (但你需要有你的设备植根)

我遇到了类似的问题。 共鸣是你没有卸载应用程序的所有组件。我的解决scheme是:手动删除/ data / data / com.eg.android.alipayGphone。

为我工作很好。

我希望这对你有帮助!

生根和工厂重置不是我的select,但我能find我的APK的旧版本,并安装(我猜这是相同的,未能正确卸载)。 再次卸载之后,我能够安装新版本。