我一直在使用Nexus 4在Android上进行调试,但是最近在这里遇到了此错误。在研究了此错误之后,似乎是应用程序未正确删除的问题。我正在调试的应用程序可以在其他Android设备以及仿真器上正常运行,此错误仅在Nexus 4上出现。我将设备插入计算机,并尝试删除数据/数据文件夹,但仍然可以同样的问题。我还检查了settings-apps来检查它是否确实已卸载。
有谁知道如何解决这个问题?根据一些用户的说法,我需要root访问权限才能正确删除数据/数据,这是真的吗?还是有其他解决方法?
我一直在使用Nexus 4在Android上进行调试,但是最近在这里遇到了此错误。在研究了此错误之后,似乎是应用程序未正确删除的问题。我正在调试的应用程序可以在其他Android设备以及仿真器上正常运行,此错误仅在Nexus 4上出现。我将设备插入计算机,并尝试删除数据/数据文件夹,但仍然可以同样的问题。我还检查了settings-apps来检查它是否确实已卸载。
有谁知道如何解决这个问题?根据一些用户的说法,我需要root访问权限才能正确删除数据/数据,这是真的吗?还是有其他解决方法?
Answers:
有时,您还必须卸载数据文件夹。对我来说,我在用户空间中有一个软件包,在中com.kikin.cts还有一个文件夹目录/data/data/com.kikin.cts。保持获取状态INSTALL_FAILED_UID_CHANGED,但删除数据文件夹后,错误消失了。
对于有根设备:
运行以下命令
adb rm -rf /data/data/<your.package.name>
对于非根设备:
重新启动设备,然后清除项目。基本上,如果不尝试重新启动,则卸载将为您完成。
您可能引入了导致此问题的SharedUserID。
我有另一个解决方案为我工作。您可以更改application的程序包名称,以便设备将其识别为其他应用程序并成功完成安装。对于那些没有root访问权限并且也不想重置设备的人可能会有所帮助。
以为我会分享这个东西,以防它对某人有帮助...我用eclipse编写了我的应用程序的新版本,并尝试在我的手机上运行它,尽管我从Google Play商店下载的手机版本稍旧。Eclipse弹出一个对话框,询问我是否愿意卸载现有的电话版本,我同意了。卸载存在缺陷,并导致INSTALL_FAILED_UID_CHANGED。
我没有运气就尝试了这里建议的大多数东西。我的手机上没有明显的APK痕迹,也找不到我可以删除的任何数据文件,但由于某些原因,我无法将APK加载到手机上。我也无法从Google Play下载以前的Beta测试版本-下载进行到100%,但随后失败,并显示一条消息“未知错误”和一个数字(可能为-24)。
我不愿意重命名我的程序包,因为我已经使用旧的程序包名称设置了Beta测试仪和应用内产品,但是我暂时在eclipse中更改了程序包名称,因此能够将该新版本安装到手机上,然后下载以及较旧的Google Play版本。两种版本在手机上彼此快乐地坐在一起,并且具有相同的应用程序名称和图标(但幕后名称不同)。然后,我可以通过将应用程序图标拖动到手机的卸载图标上来手动卸载这两者之一。手动卸载消除了冲突并修复了eclipse的有缺陷的卸载,因此我只是将eclipse软件包重命名为原始名称,并像以前一样进行。
这比恢复出厂设置或永久软件包重命名的痛苦要小得多。仅当错误源是eclipse版本与Google Play版本之间存在冲突时,它才可能起作用,但是如果您处于类似情况,则值得尝试。
在大多数情况下INSTALL_FAILED_DEXOPT或这INSTALL_FAILED_UID_CHANGED意味着您没有足够的空间来安装应用程序。
从设备中删除一些未使用的应用程序,或者至少删除应用程序的当前版本。
adb uninstall package-name
在极少数情况下,应用程序数据可能会出现问题。根据设备是否已植根,您有两种选择
无根
恢复出厂设置Settings -> Backup and reset -> Factory data reset(至少适用于Samsung S5)
扎根(或仿真器)
adb shell "rm -rf /data/data/package-name"
在过去的几天中,我在Galaxy Note 3测试设备上遇到了此问题。每当使用install_app方法执行时,我一直在使用Calabash-Andrdoid并不断收到错误INSTALL_FAILED_UID_CHANGED。我在这个问题上苦苦挣扎,因为我有两个测试设备遇到了这个问题。我尝试了上述所有操作,包括清空/ data / data / app和app.test文件夹。我什至删除了Xamarin安装的仪器后端内容,因为这是我用来开发应用程序的平台。我找不到其他要手动删除的设备。当我尝试在第三台设备上进行工作时,发现一切运行正常时,我意识到问题出在设备上。最后,对我而言唯一有效的方法是执行恢复出厂设置其中一种设备。我希望这有帮助。
谢谢,-Shah
这是现有答案未涵盖的内容。这是我在模拟器上发生的。如果我重设用户数据,则第一次会得到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不喜欢某些方法名称,但这就是问题所在。
好的,因此对于我扎根于此的LG NEXUS 4,解决方案是:(
和
假设它是: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"
加工?
只需卸载应用程序本身(而不是数据文件夹),然后重新安装它,就可以了。Android的抱怨是因为您之前可能已经从另一台计算机调试了该应用程序。
在Mediacom设备上出现相同的问题,首先
$ 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]
恢复出厂设置并没有改变动态效果(依次出现两个错误)。
根本没有选择,对我来说,解决方案是清除缓存:现在,有问题的应用程序ID可以正常工作,而我不必再次进行出厂重置。
希望能帮助到你
我找到了一种在非根设备和模拟器上均可使用的解决方案。虽然您不能直接删除非root用户设备上的数据文件夹,但可以使用以下pm命令执行此操作:
adb shellpm uninstall <app name>(即com.example.myapp)pm uninstall <test app name>(即com.example.myapp.test)-如果之前未安装测试应用,则可能会收到错误消息。似乎出于某种原因,当从Android UI卸载应用程序时,此操作不起作用(可能无法删除数据文件夹),但是通过 pm命令进行它确实可以工作。
在“ Nexus 5”和“ OnePlus One”上进行了试用。
我遇到了类似的问题。原因是您没有卸载应用程序的所有组件。我的解决方案是:手动删除/data/data/com.eg.android.AlipayGphone。
为我工作。
希望对您有帮助!
/data/data/your.package.name和删除应用程序数据/data/app,好像还没有完全卸载它。