2012-09-09 121 views
15

我从月食真正的Android设备上运行Android应用程序的问题Eclipse的安装错误:INSTALL_FAILED_UID_CHANGED

当我点击运行它只是告诉我这个错误: 安装错误:INSTALL_FAILED_UID_CHANGED

logcat的:

[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! 

回答

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/[email protected]@[email protected]' res = 65280 
09-30 19:03:19.961: W/PackageManager(314): Package couldn't be installed in /data/app/com.example.searchapp-1.apk 

正如你所看到的下联是:无效的名称:“search_country_name”

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

所以我删除此字符串和评论都参考代码

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

现在问题解决了!

您可以轻松继续编码!

+0

上完成了我在该项目上的其余工作。获取对设备root访问权限的最安全方式是什么? – davidtingsu

+0

有几种方法可以在网上很容易地找到Android设备的根,并且它们没有安全问题。 你应该小心安装根设备后需要root访问权限的未知应用程序,他们可能会伤害你的设备 –

+0

呃,不适合我...我有一个应用程序在GooglePlay商店给定的“损坏”的包名称,和一个没有根的设备(我没有root权限)。所以,我不能根或不改变ID /包名。还有一件事:它不是一个ECLIPSE BUG,因为它也出现在AndroidStudio中,甚至直接通过adb命令installig。 – mthama

2

这可能是应用程序没有得到正确卸载。可能会有数据文件夹被遗漏。因此,请尝试手动删除应用程序的数据文件夹,然后再次尝试安装应用程序。

+0

我已经完成了所有这些工作,还有一些在网上发现的其他技巧,但没有帮助! 我最终在另一个操作系统 –

0

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

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没有工作的时候,但我很高兴动上...

+0

我不能安装也不能卸载 –

+1

Eclipse/adt不会删除旧的apk,它会尝试执行升级/重新安装,在各种情况下可能会失败(证书不匹配等)。在这些情况下,您必须先手动卸载。 –

+0

@ChrisStratton - 谢谢,这在回顾过程中非常有意义。 –

0

可能是任何人的帮助...

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

我的错误:我不应该删除my.package文件夹。我必须删除此文件夹中的所有文件,因为在重新创建文件夹时,我会获取新的所有者文件夹my.package。

0

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

0

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

4

我想这一切答案 但没有效果

uproperly卸载。

解决方案:刚刚重启垫

0

已经有与您试图与分配不同的UID安装的软件包的名称的数据目录。获得root访问权限,然后尝试用下面的命令在cmd中

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

去除已经存在的目录或尝试重命名你的应用程序包到你的设备上运行。

+0

我应该在哪里运行这个命令? – slier

+0

你应该运行在adb shell中,但这不是一个好的解决方案,因为它需要设备被植根 – mthama

0

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

SOLUTION 从play-store下载SDMaid,并删除尸体文件(垃圾文件)。 重新运行应用程序。 (但你必须有你的设备植根)

0

该解决方案为我工作:

  1. 把你的APK到设备的存储/ SD卡

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