2012-09-09 59 views
15

Tôi có vấn đề với chạy một ứng dụng Android từ nhật thực trên thiết bị Android thựcEclipse lỗi cài đặt: INSTALL_FAILED_UID_CHANGED

khi tôi bấm vào Run nó chỉ cho tôi lỗi này: lỗi Cài đặt: 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! 

Trả lời

11

tôi cuối cùng tìm thấy giải pháp cho INSTALL_FAILED_DEXOPT và INSTALL_FAILED_UID_CHANGED LỖI

Sau rất nhiều thử nghiệm một khác nhau của thủ đoạn vô ích, tôi cuối cùng đã tìm thấy các giải pháp chính để giải quyết vấn đề dính này mãi mãi!

Tôi nghĩ rằng vấn đề là do lỗi Eclipse! , trên thực tế nhật thực không thể sao chép và cài đặt tệp APK được xây dựng chỉ vì tên chuỗi (được mô tả thêm)

Tôi nên thêm điều đó khi bạn sử dụng các thủ thuật trên internet như xóa thư mục tên gói trong dữ liệu/dữ liệu bạn sẽ phải đối mặt lỗi mới dính "INSTALL_FAILED_DEXOPT"

và hãy xem làm thế nào để giải quyết INSTALL_FAILED_DEXOPTINSTALL_FAILED_UID_CHANGED

Trong trường hợp của tôi, khi tôi kiểm tra con mèo log tôi nhận thấy bên dưới dòng:

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 

Như bạn có thể nhìn thấy dòng thứ hai là: Tên không hợp lệ: 'search_country_name'

Đây là một trong những tên chuỗi của tôi trong String.xml

Vì vậy, tôi xóa chuỗi này và bình luận tất cả Mã số tham chiếu

Sau đó, tôi xóa thư mục tên gói trong/data/data (nếu bạn đang sử dụng thiết bị thực, bạn nên có quyền truy cập root, nếu bạn đang sử dụng trình mô phỏng chỉ xóa dữ liệu trước khi mở trình mô phỏng hoặc tạo AVD mới)

Bây giờ vấn đề được giải quyết!

Bạn có thể dễ dàng tiếp tục mã hóa!

+0

cách an toàn nhất để có quyền truy cập root vào thiết bị là gì? – davidtingsu

+0

có một số cách để root các thiết bị Android có thể dễ dàng tìm thấy trên mạng và không có vấn đề an toàn với chúng. bạn nên cẩn thận khi cài đặt các ứng dụng không xác định cần quyền truy cập root sau khi bạn root thiết bị, chúng có thể làm hỏng thiết bị của bạn –

+0

Vâng, không phải cho tôi ... Tôi là ứng dụng có tên gói "bị hỏng" trong cửa hàng GooglePlay, và một thiết bị không bắt nguồn từ (tôi không có quyền root). Vì vậy, tôi không thể root cũng không thay đổi ID/packagename. Ngoài ra một điều nữa: CNTT KHÔNG PHẢI là một BUG ECLIPSE, bởi vì nó cũng xảy ra trong AndroidStudio, hoặc thậm chí installig thông qua lệnh adb trực tiếp. – mthama

2

Có thể ứng dụng đã không được gỡ cài đặt đúng cách. Có thể có thư mục dữ liệu bị bỏ sót. Vì vậy, hãy thử xóa thư mục dữ liệu của ứng dụng theo cách thủ công và thử cài đặt lại ứng dụng.

+0

i đã làm tất cả các công trình này và cũng có một số thủ đoạn khác được tìm thấy trên mạng, nhưng không phải của họ đã giúp! tôi cuối cùng đã làm phần còn lại của công việc của tôi trên dự án đó trên một hệ điều hành khác –

0

Cách khác, xóa trình giả lập và định cấu hình lại nó.

4

Giải pháp này cuối cùng làm việc cho tôi với không có rễ:

$ 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 

tôi không hoàn toàn hiểu tại sao điều này làm việc khi cài đặt từ Eclipse đã không làm việc cho cùng apk, nhưng tôi chỉ hạnh phúc để di chuyển trên ...

+0

Tôi không thể cài đặt hay gỡ cài đặt –

+1

Eclipse/adt không xóa gói ứng dụng cũ, nó cố gắng nâng cấp/cài đặt lại, có thể bị lỗi trong nhiều trường hợp khác nhau (chứng chỉ không khớp, v.v.). Trong những trường hợp đó, bạn phải gỡ cài đặt thủ công trước. –

+0

@ChrisStratton - cảm ơn, điều đó có ý nghĩa hoàn hảo khi nhìn lại. –

0

Có thể là bất kỳ ai giúp đỡ ...

Tôi có thiết bị gốc để gỡ lỗi.Đôi khi tôi sao lưu dữ liệu ứng dụng của tôi từ /data/data/my.package và sau đó khôi phục lại bằng vỏ adb. Trước khi khôi phục, tôi xóa thư mục my.package, tạo và sao chép các thư mục con và tệp khác. Sau này trên thay đổi tiếp theo và chạy dự án từ nhật thực, nhận được INSTALL_FAILED_UID_CHANGED lỗi.

Lỗi của tôi: Tôi không nên xóa thư mục my.package của mình. Tôi phải loại bỏ tất cả chỉ trong thư mục này, bởi vì trên thư mục tạo lại tôi nhận được thư mục chủ sở hữu mới my.package.

0

Có một công việc xung quanh cho nó. Nếu bạn không có thiết bị gốc và bạn không thể truy cập/dữ liệu/dữ liệu/thư mục cũng có, sau đó chỉ cần thiết lập lại thiết bị của bạn. Nó sẽ xóa mọi thứ khỏi thư mục dữ liệu và bạn có thể cài đặt lại ứng dụng sạch. Hạn chế duy nhất là mọi thứ sẽ bị xóa khỏi điện thoại của bạn.

0

Tôi gặp sự cố này trên trình mô phỏng. Tôi đã xóa chương trình avd và tạo một tệp mới. Vấn đề đã biến mất.

4

Tôi đã thử tất cả các câu trả lời này nhưng không có hiệu lực

gỡ cài đặt chính xác.

giải pháp: chỉ cần khởi động pad

0

Đã có một thư mục dữ liệu với tên của gói bạn đang cố gắng để cài đặt với một UID khác nhau được giao. Nhận quyền truy cập root và sau đó thử xóa thư mục đã tồn tại bằng lệnh sau trong cmd

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

Hoặc cố gắng đổi tên gói ứng dụng để chạy trên thiết bị của bạn.

+0

Tôi nên chạy lệnh này ở đâu? – slier

+0

bạn nên chạy trong adb shell, nhưng đây không phải là một giải pháp tốt, bởi vì nó cần thiết bị được root – mthama

0

Vì vậy, nếu bạn đi xuống để tìm điều này .. không có gì có thể có hiệu quả cho bạn. Tuy nhiên, có một sửa chữa dễ dàng cho việc này. Rõ ràng là do gỡ cài đặt không đúng cách (có thể do kết nối cáp bị lỗi).

GIẢI PHÁP Tải xuống SDMaid từ cửa hàng play và xóa tệp Corpse (tệp rác). Ứng dụng chạy lại. (Tuy nhiên, bạn cần phải có thiết bị của bạn bắt nguồn từ)

0

Giải pháp này làm việc cho tôi:

  1. Đặt APK của bạn vào thẻ lưu trữ/sd của thiết bị

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