15

我在真正的 android 设备上从 eclipse 运行 android 应用程序时遇到问题

当我单击运行时,它只显示此错误:安装错误:INSTALL_FAILED_UID_CHANGED

日志猫:

[2012-09-09 14:38:26 - SearchApp] Android Launch!
[2012-09-09 14:38:26 - SearchApp] adb is running normally.
[2012-09-09 14:38:26 - SearchApp] Performing com.example.MainActivity activity launch
[2012-09-09 14:38:26 - SearchApp] Automatic Target Mode: using device 'cff192abd7f551f'
[2012-09-09 14:38:26 - SearchApp] Uploading SearchApp.apk onto device 'cff192abd7f551f'
[2012-09-09 14:38:27 - SearchApp] Installing SearchApp.apk...
[2012-09-09 14:38:28 - SearchApp] Installation error: INSTALL_FAILED_UID_CHANGED
[2012-09-09 14:38:28 - SearchApp] Please check logcat output for more details.
[2012-09-09 14:38:28 - SearchApp] Launch canceled!
4

11 回答 11

11

我最终找到了 INSTALL_FAILED_DEXOPT 和 INSTALL_FAILED_UID_CHANGED 错误的解决方案

在徒劳地测试了各种技巧之后,我终于找到了永远解决这个棘手问题的主要解决方案!

我认为问题是由 Eclipse 错误引起的!,实际上eclipse不能仅仅因为一个字符串名称而复制和安装构建的APK文件(进一步描述)

我应该补充一点,当您在互联网上使用诸如删除数据/数据中的包名称文件夹之类的技巧时,您将面临一个新的粘性错误“ INSTALL_FAILED_DEXOPT

那么让我们看看如何解决INSTALL_FAILED_DEXOPTINSTALL_FAILED_UID_CHANGED

就我而言,当我检查日志猫时,我注意到以下几行:

09-30 19:03:19.882: I/PackageManager(314): Running dexopt on: com.example.searchapp
09-30 19:03:19.921: E/dalvikvm(6129): Invalid name: 'search_‌country_name'
09-30 19:03:19.921: E/dalvikvm(6129): Trouble with item 226 @ offset 0x2094
09-30 19:03:19.921: E/dalvikvm(6129): Cross-item verify of section type 0004 failed
09-30 19:03:19.921: E/dalvikvm(6129): ERROR: Byte swap + verify failed
09-30 19:03:19.961: E/dalvikvm(6129): Optimization failed
09-30 19:03:19.961: W/installd(144): DexInv: --- END '/data/app/com.example.searchapp-1.apk' --- status=0xff00, process failed
09-30 19:03:19.961: E/installd(144): dexopt failed on '/data/dalvik-cache/data@app@com.example.searchapp-1.apk@classes.dex' res = 65280
09-30 19:03:19.961: W/PackageManager(314): Package couldn't be installed in /data/app/com.example.searchapp-1.apk

如您所见,第二行是:Invalid name: 'search_‌country_name'

这是我在 String.xml 中的字符串名称之一

所以我删除了这个字符串并注释了所有引用的代码

然后我删除 /data/data 中的包名称文件夹(如果您使用的是实际设备,则应该具有 root 访问权限,如果您使用的是模拟器,只需在打开模拟器或制作新的 AVD 之前擦除数据)

现在问题解决了!

您可以轻松地继续编码!

于 2012-09-30T16:14:36.287 回答
4

这个解决方案终于在没有根的情况下对我有用:

$ platform-tools/adb -d install /path/to/proj/bin/foo.apk
797 KB/s (4872885 bytes in 5.963s)
pkg: /data/local/tmp/foo.apk
Success
$ platform-tools/adb -d uninstall com.example.foo.bar
Success

我不完全明白为什么从 Eclipse 安装时这对同一个 APK 不起作用,但我很高兴继续前进......

于 2013-01-17T13:36:55.357 回答
4

我尝试了所有这些答案,但没有效果

正确卸载。

解决方法:重启pad

于 2014-07-02T16:01:38.900 回答
2

应用程序可能未正确卸载。可能有遗漏的数据文件夹。所以尝试手动删除应用程序的数据文件夹并尝试再次安装应用程序。

于 2012-09-18T04:57:32.917 回答
0

或者,删除模拟器并重新重新配置。

于 2012-12-31T07:49:27.583 回答
0

有一个解决方法。如果您没有根设备并且您也无法访问 /data/data/ 文件夹,那么只需重置您的设备。它将从数据文件夹中删除所有内容,您可以再次安装干净的应用程序。唯一的缺点是所有内容都会从您的手机中删除。

于 2013-10-18T18:29:15.240 回答
0

我在模拟器上遇到了这个问题。我删除了 avd 并创建了一个新的。问题消失了。

于 2014-01-03T23:44:34.777 回答
0

可能有人帮忙...

我有用于调试的根设备。有时我从 /data/data/my.package 备份我的应用程序数据,然后通过 adb shell 恢复。在还原之前,我删除了 my.package 文件夹,重新创建并复制其他子文件夹和文件。在下次更改并从 Eclipse 运行项目之后,得到 INSTALL_FAILED_UID_CHANGED 错误。

我的错误:我不应该删除 my.package 文件夹。我必须只删除此文件夹中的所有内容,因为在重新创建文件夹时,我得到了新的所有者文件夹 my.package。

于 2013-07-24T17:30:27.320 回答
0

已经有一个数据目录,其名称为您尝试安装的包的名称,并分配了不同的 UID。获取 root 访问权限,然后尝试在 cmd 中使用以下命令删除已存在的目录

  rm -r /data/data/com.your.package

或者尝试重命名您的应用程序包以在您的设备上运行它。

于 2014-09-09T15:37:39.787 回答
0

这个解决方案对我有用:

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

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

于 2016-01-11T08:24:30.083 回答
0

所以如果你下来找到这个.. 没有什么可能对你有用。然而,有一个简单的解决方法。这显然是因为卸载不当(可能是由于电缆连接错误)。

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

于 2015-11-07T23:51:54.693 回答