2012-09-09 118 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"