알 수없는 설치 오류 코드 -505를 어떻게 처리합니까?


9

Nexus 7이 있는데 Android 5로 업데이트되었습니다.

시스템 업그레이드 후 아이들이하는 게임 인 두 개의 앱이 문제를 일으 킵니다. 멍청한 방법과 VVVVVV. 둘 다 업그레이드 후 아이콘이 있었지만 클릭하면 "앱이 설치되지 않았습니다"라는 팝업이 나타납니다. 설치하려고합니다. 다운로드는 괜찮습니다. 설치가 시작됩니다. 그리고 오류 메시지 :

응용 프로그램 설치 중 알 수없는 오류 코드 : "-505"

두 앱 모두 동일한 오류입니다. 아무 소용이 없도록 기기를 다시 시작했습니다.

다음에 무엇을해야할지 모르겠습니다. 어떤 종류의 영혼이이 문제를 어떻게 해결할 수 있는지 조언 해 줄 수 있습니까?

답변:


10

TL; DR

이 문제는 앱이 오류 메시지와 함께 기존 권한을 다시 선언하려고 할 때 발생합니다 INSTALL_FAILED_DUPLICATE_PERMISSION. 주로 Adobe AIR (패키지 접두어 포함 com.air)를 기반으로하는 앱에 영향을 미쳤습니다 . 주요 원인은 인증서의 서명이 응용 프로그램을 서명하는 데 사용 확인할 때 롤리팝 5.0의 다른 코드의 구현입니다. 솔루션의 경우 "솔루션"부분으로 건너 뛰십시오.

업데이트 : Google은 Lollipop 5.0.1에서이 문제를 해결했습니다.


기술적 세부 사항

에서 발췌 안드로이드 L 개발자 미리보기 이슈 트래커 에서 연결되어 AOSP의 이슈 트래커의 항목 ,

게시물 # 4 :

logcat은 설치 중 권한 재 선언과 충돌이 있음을 알려줍니다 (제 경우 Amazon은 이미 Camera 360이 소유하고있는 getui.permission.GetuiService를 재 선언하려고합니다)

포스트 # 12의 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

에서 발췌 AOSP 문제 추적기 ,

포스트 # 4

API19에서 새로운 X509CertImpl (encCert)은 인증서 (이미 구문 분석되어 SHA1 계산 준비)를 랩핑하는 반면 API 21에서는 인증서가 바이트 스트림으로 전달되어 다시 구문 분석되고 인증서 팩토리에 의해 처리됩니다. 즉, 어떤 공장은 상황에 달려 있습니다. 테스트 한 L 장치의 경우 공장에서 OpenSSLX509 인증서를 생성합니다. 불행하게도, 인증서에 openssl에 문제가 있고 openssl 처리 중에 지문이 변경되는 것이 있습니다. 인증서를 다른 형식 (예 : PEM)으로 변환 할 때 openssl 도구로도이를 재현 할 수 있습니다.

SHA1이 'encCert.getEncoded ()'에서 직접 계산되면 두 경우 모두 정확합니다.


해결책

업데이트 : 2014-12-04 현재 Google은 Lollipop 5.0.1에서이 문제를 해결했습니다. 응용 프로그램을 다시 설치하려고 시도하는 해결 방법을 수행하지 않은 사람들을 위해 Lollipop 5.0.1 이미지가 OTA를 준비 / 대기 할 때 이미지를 플래시 할 수 있습니다.

포스트 # 20, # 21

이것은 5.0.1에서 수정 된 것 같습니다.

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

https://android.googlesource.com/platform/frameworks/base/+/32a22c44b8351c1cccd3a1f9c47a33469d9378e0

상태 : 출시

커미터 노트

잘못된 인증서로 앱을 복구하십시오.

Lollipop에는 디코드 / 인코딩주기를 거친 후에 인증서가 유지되는 시간이있었습니다. 잘 작성된 OpenSSL 라이브러리는 디코딩 할 때 자유롭지 만 (잘못된 형식의 인증서를 구문 분석 할 수 있도록) 인코딩 할 때 엄격하여 동일한 인증서에 대해 다른 바이트를 제공합니다.

관련 libcore 변경 (0c990ab4a90b8a5492a67b2b728ac9a4a1ccfa1b)은 이제 원래 바이트를 그대로 반환하여 롤리팝 이전 설치 및 변경 후 설치를 수정합니다.

이 변경 사항은 인증서가 실제로 같은지 확인하기 위해 일회성 검사를 수행하여 위에서 설명한 기간 동안 설치된 모든 앱을 복구합니다.


다른 제안 된 솔루션에 대해서는 이전 개정판 을 참조하십시오 .


나는 David와 동일합니다 : 장치에서 제거 할 것이 없으며 ADB가 장치를 볼 수 없으며 다시 설치하려고하면 Google Play에서 -505가 발생하고 로컬 APK에서 설치할 때 설명 오류가 발생합니다. 손님으로 전환해도 도움이되지 않습니다.
Roman R.

2
글쎄, 나는이 문제에 직면했다는 것을 깨달았다. 로 문제가있는 앱을 성공적으로 제거 adb했지만 다시 설치할 수 없습니다. 설치하려는 앱 air.com에는 패키지 이름으로 접두사가 있습니다. 이것은 Google, Adobe Air 및 앱 개발자 사이에서 더 큰 문제입니다. 적어도 하나가 문제를 해결하기 전까지는 앱을 설치할 수 없습니다. Google에서 업데이트를 받기 위해 문제를 별표 표시했습니다.
Andrew T.

3
5.1.1 (cyanogenmod 12.1 galaxy s3 최신 야간)에서 동일한 오류가 발생합니다. 그들은 어떻게 든 오래된 코드를 가지고 있었습니까, 아니면 이것이 더 최근의 버그입니까?
ike

1
Android 6.0 Marshmallow 에서이 문제가 있습니다. 이것에 대한 해결책이 있었습니까, 아니면 OTA를 기다리십니까?
Ben

2
@Ben에서이 게시물은 5.0.1로 수정 된 INSTALL_FAILED_DUPLICATE_PERMISSION 관련 문제를 언급합니다. INSTALL_FAILED_CONFLICTING_PROVIDER로 인해 Marshmellow에서이 오류가 발생했습니다. 디버그 및 릴리스 빌드 모두에서 선언 된 Facebook SDK Share 대화 상자의 공급자를 사용하여 Google Play Store에서 릴리스 빌드를 설치할 수 없습니다. adb logcat을 통해 정확한 메시지 탐색을 볼 수 있습니다. 필자의 경우 공급자 이름에 manifestPlaceholders를 사용하여 디버그 빌드의 <provider> 이름을 바꾸도록 선택했습니다.
Mike Lambert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.