Làm cách nào để xử lý mã lỗi cài đặt không xác định -505?


9

Tôi có Nexus 7 và nó vừa được cập nhật lên Android 5.

Hai ứng dụng cho tôi rắc rối sau khi nâng cấp hệ thống, các trò chơi mà con tôi chơi. Những cách ngu ngốc để chết và VVVVVV. Cả hai đều có biểu tượng sau khi nâng cấp nhưng khi nhấp vào, một cửa sổ bật lên xuất hiện với nội dung "Ứng dụng chưa được cài đặt". Tôi cố gắng cài đặt chúng. Tải về là tốt. Quá trình cài đặt bắt đầu. Và sau đó là một thông báo lỗi:

Mã lỗi không xác định trong khi cài đặt ứng dụng: "-505"

Lỗi chính xác cho cả hai ứng dụng. Tôi đã khởi động lại thiết bị vô ích.

Tôi không biết phải làm gì tiếp theo. Xin một linh hồn tốt bụng có thể cho tôi lời khuyên về cách tôi có thể khắc phục vấn đề này.

Câu trả lời:


10

TL; DR

Sự cố này xảy ra khi một ứng dụng đang cố gắng khai báo lại quyền hiện có, với thông báo lỗi INSTALL_FAILED_DUPLICATE_PERMISSION. Nó chủ yếu ảnh hưởng đến các ứng dụng dựa trên Adobe AIR (tiền tố gói với com.air). Nguyên nhân chính là do việc triển khai mã khác nhau trong Lollipop 5.0 khi xác minh chữ ký của chứng chỉ được sử dụng để ký ứng dụng. Đối với giải pháp, chỉ cần bỏ qua phần "Giải pháp".

Cập nhật : Google đã khắc phục sự cố này trên Lollipop 5.0.1.


Chi tiết kỹ thuật

Đoạn trích từ trình theo dõi sự cố của Nhà phát triển Android L được liên kết từ một mục trên trình theo dõi sự cố AOSP ,

Bài số 4 :

logcat cho tôi biết có xung đột với quyền truy cập lại trong quá trình cài đặt (trong trường hợp của tôi, Amazon đang cố gắng phân phối lại getui-01.GetuiService, vốn đã được sở hữu bởi Camera 360)

Đăng số 12 của LogCat :

10-25 08:06:37.805   749   824 W PackageManager: Package com.tencent.mm attempting to redeclare permission com.google.android.c2dm.permission.SEND already owned by com.google.android.gsf
10-25 08:06:37.926  4812  4812 D Finsky  : [1] PackageInstallerImpl.cancelSession: Canceling session 121130466 for com.tencent.mm
10-25 08:06:37.926  4812  4812 E Finsky  : [1] PackageInstallerImpl.handleCommitCallback: Error -505 while installing com.tencent.mm: INSTALL_FAILED_DUPLICATE_PERMISSION: Package com.tencent.mm attempting to redeclare permission com.google.android.c2dm.permission.SEND already owned by com.google.android.gsf
10-25 08:06:37.926  4812  4812 W Finsky  : [1] 4.installFailed: Install failure of com.tencent.mm: -505 null
10-25 08:06:37.933   749   749 D ZenLog  : intercepted: 0|com.android.vending|-973170826|null|10017,!priority
10-25 08:06:37.933   749   749 V NotificationService: pkg=com.android.vending canInterrupt=false intercept=true
10-25 08:06:37.964  4812  4812 D Finsky  : [1] InstallerTask.cancelCleanup: Cancel running installation of com.tencent.mm

Trích từ trình theo dõi vấn đề AOSP ,

Bài số 4

Trong API19, X509CertImpl (encCert) mới bọc chứng chỉ (đã được phân tích cú pháp và sẵn sàng cho tính toán SHA1), trong khi trong API 21, chứng chỉ được chuyển tiếp dưới dạng luồng byte, được phân tích lại và được xử lý bởi nhà máy chứng chỉ. Đó là nhà máy nào, phụ thuộc vào bối cảnh. Trong trường hợp các thiết bị L mà tôi đã thử nghiệm, nhà máy sẽ tạo một OpenSSLX509Certert. Thật không may, có một cái gì đó trong chứng chỉ của chúng tôi mà openssl gặp rắc rối và dấu vân tay thay đổi trong quá trình xử lý openssl. Tôi cũng có thể sao chép điều này bằng công cụ openssl, khi tôi chuyển đổi chứng chỉ của chúng tôi sang một số định dạng khác (ví dụ: PEM).

Nếu SHA1 sẽ được tính trực tiếp trên 'encCert.getEncoding ()' thì điều đó sẽ đúng trong cả hai trường hợp.


Giải pháp

Cập nhật : Kể từ 2014-12-04, Google đã khắc phục sự cố này trên Lollipop 5.0.1. Đối với những người không thực hiện bất kỳ cách giải quyết nào khi cố gắng cài đặt lại ứng dụng, bạn có thể flash hình ảnh Lollipop 5.0.1 khi nó sẵn sàng / chờ OTA.

Bài số 20, số 21

Có vẻ như điều này đã được sửa trong 5.0.1:

https://android.googlesource.com/pl platform / libcore / + / 6632d8c9d8d1a3ac338d541676148677641bafe3

https://android.googlesource.com/pl platform / frameworks / base / + / aaacc

Tình trạng: Đã phát hành

Ghi chú của nhân viên

Phục hồi các ứng dụng với chứng chỉ không đúng định dạng.

Có một cửa sổ thời gian trong Lollipop nơi chúng tôi duy trì các chứng chỉ sau khi chúng đã trải qua chu kỳ giải mã / mã hóa. Thư viện OpenSSL được viết tốt là tự do khi giải mã (cho phép phân tích cú pháp không đúng định dạng), nhưng sau đó nghiêm ngặt khi mã hóa, cung cấp cho chúng tôi các byte khác nhau để có cùng chứng chỉ.

Một thay đổi libcore liên quan (0c990ab4a90b8a5492a67b2b728ac9a4a1ccfa1b) hiện trả về các byte gốc nguyên văn, sửa cả cài đặt trước Lollipop và cài đặt sau khi thay đổi đó.

Thay đổi này phục hồi bất kỳ ứng dụng nào đã được cài đặt trong cửa sổ thời gian được mô tả ở trên bằng cách kiểm tra một lần để xem liệu các certs có hiệu quả như nhau không.


Vui lòng tham khảo bản sửa đổi cũ hơn cho các giải pháp được đề xuất khác.


Tôi cũng giống như David: không có gì để gỡ cài đặt khỏi thiết bị, ADB không thấy thiết bị của tôi, cố gắng cài đặt lại dẫn đến -505 từ Google Play và lỗi không thể mô tả khi được cài đặt từ APK cục bộ. Chuyển sang Guest cũng không hữu ích.
Roman R.

2
Chà, tôi mới nhận ra mình cũng phải đối mặt với vấn đề này. Tôi đã gỡ cài đặt thành công các ứng dụng có vấn đề với adb, nhưng tôi không thể cài đặt lại. Lưu ý rằng ứng dụng tôi muốn cài đặt có air.comtiền tố là tên gói. Có vẻ như đây là vấn đề giữa Google, Adobe Air và các nhà phát triển ứng dụng. Cho đến khi ít nhất một trong số họ sửa nó, ứng dụng sẽ không thể được cài đặt. Tôi đánh dấu sao vấn đề để nhận cập nhật từ Google.
Andrew T.

3
Tôi có cùng một lỗi trên 5.1.1 (cyanogenmod 12.1 galaxy s3 mới nhất hàng đêm). Có phải họ bằng cách nào đó có mã cũ, hoặc đây là một lỗi gần đây hơn?
ike

1
Tôi đang gặp sự cố này trên Android 6.0 Marshmallow. Đã có một giải pháp cho vấn đề này, hay chỉ chờ đợi một OTA?
Ben

2
@Ben, bài đăng này đề cập đến các vấn đề với INSTALL_FAILED_DUPLICATE_PERMISSION, đã được sửa với 5.0.1. Tôi đã gặp lỗi này với Marshmellow, do INSTALL_FAILED_CONFLICTING_PROVIDER. Tôi sử dụng nhà cung cấp hộp thoại Chia sẻ SDK của Facebook, được khai báo trong cả bản dựng gỡ lỗi và bản phát hành của tôi, ngăn cài đặt bản phát hành bản phát hành từ Cửa hàng Google Play. Bạn có thể thấy chính xác trình duyệt tin nhắn thông qua logcat adb của bạn. Trong trường hợp của tôi, tôi đã chọn đổi tên <nhà cung cấp> bản dựng gỡ lỗi của mình thông qua việc sử dụng manifestPlaceholder trong tên nhà cung cấp của tôi.
Mike Lambert
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.