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)은 이제 원래 바이트를 그대로 반환하여 롤리팝 이전 설치 및 변경 후 설치를 수정합니다.
이 변경 사항은 인증서가 실제로 같은지 확인하기 위해 일회성 검사를 수행하여 위에서 설명한 기간 동안 설치된 모든 앱을 복구합니다.
다른 제안 된 솔루션에 대해서는 이전 개정판 을 참조하십시오 .