Làm cách nào để đối phó với INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATE mà không cần gỡ cài đặt?


277

Tôi đã cố cài đặt lại apk

$adb install -r new.apk

Và nó hiển thị lỗi:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

Một giải pháp là gỡ cài đặt và cài đặt new.apk, hoạt động tốt.

Nhưng tôi tự hỏi liệu tôi có thể xây dựng lại apk và cài đặt lại mà không cần gỡ cài đặt hay không. Ví dụ. thay đổi một số cấu hình trong AndroidManifest.xml hoặc không ký APK, v.v.

Sẽ rất tuyệt nếu bạn có thể cho tôi biết toàn bộ ý nghĩa của "INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATE".


Hãy thử giải quyết vấn đề bằng cách chạy apk của bạn trên một thiết bị thực tế, nó luôn hoạt động với tôi
Kyle

Nó không làm việc cho tôi. ^ @ Mr.Derpinthoughton
Crime_Master_GoGo

Điều này cũng có thể xảy ra khi ứng dụng được ký hai lần và nâng cấp được ký theo thứ tự ngược lại. Xem stackoverflow.com/a/13618894/5276890 để biết thêm thông tin về điều này.
Roy Falk

Câu trả lời:


319

Điều đó có nghĩa là bản sao mới của ứng dụng của bạn (trên máy phát triển của bạn) đã được ký bằng một khóa ký khác với bản sao cũ của ứng dụng của bạn (được cài đặt trên thiết bị / trình giả lập). Ví dụ: nếu đây là một thiết bị, bạn có thể đã đặt bản sao cũ từ một máy phát triển khác (ví dụ: một số máy của nhà phát triển khác). Hoặc, cái cũ được ký với khóa sản xuất của bạn và cái mới được ký với khóa gỡ lỗi của bạn.


6
@atTHER: Bạn sẽ phải sao chép kho khóa của máy trước đó (ví dụ debug.keystore:) vào máy mới của bạn.
CommonsWare

12
Lưu ý rằng debug.keystorekhông có trong thư mục dự án của bạn. Nó là bình thường trong ~/.android/thư mục của bạn . (xem developer.android.com/guide/publishing/
ohhorob

3
Làm thế nào người ta có thể đặt cho gói gỡ lỗi một tên khác? (ví dụ: {PRODUCT_NAME} Dev)
sandstrom

6
@ChristianBongiorno: Đồng bộ hóa các kho khóa ký của bạn (ví dụ debug.keystore:). Chọn một cái để làm kho khóa chính của bạn, sao chép nó vào tất cả các máy phát triển khác, thay thế kho khóa hiện tại của chúng.
CommonsWare

2
Đừng quên xây dựng lại dự án của bạn sau khi sao chép tập tin quá. Tôi đã di chuyển các tập tin và gửi lại ứng dụng đến thiết bị (nhưng nó vẫn đang sử dụng cái cũ debug.keystore). Khi tôi xây dựng lại dự án (sử dụng Build-> Rebuild trong Android Studio), các khóa sẽ được đồng bộ hóa.
Benjamin Kaiser

48

Tôi đã gặp phải điều này trong khi thử nghiệm trên một Xoom mới. Trước đây tôi đã cài đặt ứng dụng của mình từ Thị trường. Sau này trong khi thử kiểm tra phiên bản mới của ứng dụng, tôi gặp phải lỗi này.

Tôi đã sửa nó bằng cách xóa ứng dụng đã được cài đặt qua Marketplace (chỉ cần giữ và kéo vào thùng rác). Sau đó tôi đã có thể triển khai phiên bản phát triển của mình mà không gặp vấn đề gì.


12
có, gỡ cài đặt sẽ giải quyết vấn đề cấp phép này. Tôi đã tự hỏi liệu tôi có thể giải quyết vấn đề này mà không cần gỡ cài đặt hay không
Johnny

Có một điện thoại mới và đã quên về điều này. Làm thế nào để tôi đánh dấu điều này lên hai lần :)
Anthony Horne

22

Điều này xảy ra với tôi khi một nhà phát triển khác trong nhóm xây dựng ứng dụng của chúng tôi trên thiết bị phần cứng mà tôi đang cố gắng triển khai. Gỡ cài đặt ứng dụng khỏi phần cứng đã khắc phục sự cố của tôi.


16
Tuyệt quá! Làm việc sau khi ra lệnh adb uninstall <package name>. Cảm ơn.
Paul

Tôi đã có một trường hợp độc đáo hơn, nhưng câu trả lời này dẫn đến giải pháp. Tôi đã có một ứng dụng được cài đặt thông qua CLI cordova cục bộ và cũng là một ứng dụng được cài đặt từ bản dựng PG. Tôi đã phải gỡ cài đặt cả hai ứng dụng cho lỗi để biến mất.
Dân chủ

@Paul Sự xuất sắc của bạn - King Paul I, trong khi tôi không phải là người hỏi ban đầu, lệnh của bạn đã làm việc cho tôi (và không nghi ngờ gì nữa những người khác đã đưa ra nhận xét của bạn như thế nào). Tôi có thể đề nghị bạn gửi nó như là một câu trả lời?
barlop

1
@barlop: Tôi đã đăng một câu trả lời với lệnh chỉ để dễ thấy hơn đối với những người khác cũng có thể gặp phải vấn đề này. Cảm ơn.
Paul

3
Tôi không hiểu tại sao câu trả lời này có ý nghĩa. Anh ấy nói rõ ràng "KHÔNG CÓ SỰ KHÔNG GIỚI HẠN"! -
Christian

20

Đây là lệnh gỡ cài đặt ứng dụng khỏi thiết bị bằng adb:

adb uninstall <package name>

8
Câu hỏi là về cách giải quyết vấn đề mà không cần gỡ cài đặt.
Janaka Bandara

2
Tôi không hiểu tại sao câu trả lời này có ý nghĩa. Anh ấy nói rõ ràng "KHÔNG CÓ SỰ KHÔNG GIỚI HẠN"!
Christian

Không có cờ chiều để thay thế gói bằng chứng chỉ không nhất quán, phải không? Ý định bảo mật?
JohnyTex

9

Tôi đã gặp lỗi này ngay cả sau khi gỡ cài đặt APK gốc, điều này đang gây bí ẩn. Cuối cùng tôi nhận ra rằng tôi đã thiết lập nhiều người dùng trên Nexus 7 để thử nghiệm và ứng dụng vẫn được cài đặt cho một trong những người dùng khác. Khi tôi gỡ cài đặt nó cho tất cả người dùng, lỗi đã biến mất.


5

Tôi đã thay đổi tên gói trong khi mã hóa một bản cập nhật để tôi có thể gỡ lỗi nó trên thiết bị của mình thông qua Eclipse, mà không xóa phiên bản cũ đã được cài đặt. Không hoàn nguyên tên gói tôi đang sử dụng khi cố gắng cài đặt lại, tôi đã gặp lỗi tương tự. Sử dụng cùng tên gói, cài đặt lại đã thành công.


3

Chỉ cần xóa bản dựng cũ khỏi thiết bị và cài đặt lại tương tự. Vì device.keystore đã tồn tại trong thiết bị nên chỉ cần gỡ cài đặt bản dựng và cài đặt lại APK đó là tất cả ..

Cảm ơn


Vâng, câu trả lời tốt hơn và rõ ràng hơn là câu trả lời từ CommonsWare. Cảm ơn
tres.14159 27/08/2015

3

Tôi đã phải đối mặt với một trường hợp sử dụng khác khi tôi gặp lỗi tương tự. Lúc đầu, tôi gặp lỗi, tôi đã hoảng loạn và gỡ bỏ/data/data/{package.name} Sau đó tôi đã thử và vấn đề của tôi vẫn còn. Sau đó tôi đã thử gỡ cài đặt, nó thất bại.

Sau đó tôi đã xóa tệp apk có trong /system/app (yêu cầu quyền truy cập root) và thử gỡ cài đặt và nó đã thành công.

Sau đó tôi đã thử cài đặt lại apk, nó đã hoạt động.


1

Để biết giá trị của nó, tôi đã gặp phải vấn đề này sau khi thêm một plugin mới vào dự án Cordova của mình. Tôi đã có cordova thực hiện các bản dựng và cài đặt trực tiếp trên thiết bị qua USB.

Tôi đã sửa nó bằng cách gỡ cài đặt ứng dụng khỏi thiết bị và trong lần triển khai tiếp theo không có vấn đề gì.


1

Nếu bạn gặp phải việc triển khai thất bại cho thiết bị hoặc trình giả lập Andorid với lỗi "Lỗi [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATE]" trong Cửa sổ đầu ra, chỉ cần xóa ứng dụng hiện có trên thiết bị hoặc trình giả lập và triển khai lại. Các bản dựng gỡ lỗi sẽ sử dụng chứng chỉ gỡ lỗi trong khi các bản dựng phát hành sẽ sử dụng chứng chỉ được cấu hình của bạn. Lỗi này chỉ đơn giản là cho bạn biết rằng chứng chỉ của ứng dụng được cài đặt trên thiết bị khác với chứng chỉ bạn đang cố cài đặt. Trong các tình huống không phát triển (cửa hàng ứng dụng), đây có thể là chỉ báo của ứng dụng bị hỏng hoặc bị sửa đổi nếu không an toàn để cài đặt trên thiết bị.


0

Không có gì từ trên làm việc cho tôi. Vấn đề đối với tôi là tôi đã có nguồn sai trong Đường dẫn xây dựng Java của mình cho android-support-v7-appcompat. Khi bạn đi đến Project> Build Path> Cấu hình đường dẫn xây dựng>. Trong tab Nguồn, đảm bảo bạn có android-support-v7-appcompat / gen, android-support-v7-appcompat / libs và android-support-v7-appcompat / src và không có gì khác. Nhấn OK và nó sẽ hoạt động.


0

Tôi đã có cùng một lỗi ngày hôm nay, nhưng vấn đề không hoàn toàn giống nhau. Tôi đang sử dụng ADB với Android được cài đặt trong VirtualBox . Tôi đã cố gắng cài đặt các phiên bản khác nhau của ứng dụng của mình (chế độ đã ký / chưa ký, gỡ lỗi / phát hành) và có hai lỗi thay thế: INSTALL_FAILED_UID_CHANGEDINSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES .

Bây giờ, khi nhìn vào /data/data/{package.name}, tôi thấy một loạt các tệp vẫn còn đó sau khi gỡ cài đặt ứng dụng. Tôi đã cố gắng đểrm -rf họ mà không thành công: tôi đã gặp lỗi I / O.

Giải pháp cho vấn đề này là:

  • Tắt máy ảo
  • Gắn hình ảnh VDI với vdfuse (đọc / ghi)
  • Sửa chữa Partition1tập tin hình ảnh vớie2fsck
  • Umount và khởi động lại VM

0

Tôi đã có cùng một vấn đề cho đến khi tôi nhận ra rằng tôi đã chạy trình giả lập và adb đang cố gắng cài đặt trên đó


0

Vì việc xác minh dựa trên tên của gói, bạn có thể thay đổi tên gói bên trong tệp config.xml hoặc tệp kê khai của mình cho một tên khác mà bạn muốn.

Khi xuất bản ứng dụng của bạn đừng quên đổi lại tên!


0

Tôi gặp vấn đề này khi cố gắng thực hiện nhiệm vụ gradle connectedDebugAndoidTest(hoặc connectedAndroidTest) trên Genymotion . Chạy nó trên trình giả lập bình thường đã giải quyết vấn đề.


Tôi cũng đã nhận được điều này trong tình huống tương tự (thử nghiệm với Genymotion). Hóa ra đó là một xung đột với chữ ký cho gói thử nghiệm. Loại bỏ gói thử nghiệm đã giải quyết vấn đề.
D-C0d3r

0

Tôi nghĩ rằng, ứng dụng của bạn được cài đặt bởi tài khoản khác. (Tính năng nhiều chế độ tài khoản) Bạn có thể gỡ cài đặt ứng dụng trong Cài đặt> Ứng dụng> "tên ứng dụng"> Gỡ cài đặt

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.