제거하지 않고 INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES를 처리하는 방법은 무엇입니까?


277

APK를 다시 설치하려고했습니다.

$adb install -r new.apk

그리고 오류를 보여줍니다 :

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

한 가지 해결책은 new.apk를 제거하고 설치하는 것입니다.

그러나 APK를 다시 빌드하고 제거하지 않고 다시 설치할 수 있는지 궁금합니다. 예 : AndroidManifest.xml에서 일부 구성을 변경하거나 APK에 서명하지 마십시오.

"INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES"의 전체 의미를 말해 주시면 감사하겠습니다.


실제 기기에서 APK를 실행하여 문제를 해결해보세요. 항상 작동합니다.
Kyle

그것은 나를 위해 작동하지 않습니다. ^ @ Mr.Derpinthoughton
Crime_Master_GoGo

앱이 두 번 서명되고 업그레이드가 역순으로 서명 된 경우에도 발생할 수 있습니다. 이에 대한 자세한 내용은 stackoverflow.com/a/13618894/5276890 을 참조하십시오 .
Roy Falk

답변:


319

이는 새 애플리케이션 (개발 시스템)이 이전 애플리케이션 사본 (장치 / 에뮬레이터에 설치된)과 다른 서명 키로 서명되었음을 의미합니다. 예를 들어, 이것이 장치 인 경우 다른 개발 시스템 (예 : 다른 개발자의 시스템)에서 이전 사본을 넣었을 수 있습니다. 또는 이전 키는 프로덕션 키로 서명되고 새 키는 디버그 키로 서명됩니다.


6
@atourney : 이전 머신의 키 저장소 (예 :)를 debug.keystore새 머신 으로 복사 해야합니다.
CommonsWare

12
(가) 있습니다 debug.keystore프로젝트 디렉토리에 있지 않습니다. 일반적으로 ~/.android/디렉토리에 있습니다. ( developer.android.com/guide/publishing/… 참조 )
ohhorob

3
어떻게 디버그 패키지에 다른 이름을 부여 할 수 있습니까? (예 : {PRODUCT_NAME} Dev)
sandstrom

6
@ChristianBongiorno : 서명 키 저장소를 동기화하십시오 (예 :) debug.keystore. 하나를 마스터 키 저장소로 선택하고 다른 모든 개발자 시스템에 복사하여 기존 키 저장소를 바꾸십시오.
CommonsWare

2
파일을 복사 한 후에도 프로젝트를 다시 빌드하는 것을 잊지 마십시오. 파일을 옮기고 응용 프로그램을 장치로 다시 보냈습니다 (그러나 여전히을 사용하고 있습니다 debug.keystore). 프로젝트를 다시 빌드하면 (Android Studio에서 Build-> Rebuild 사용) 키가 동기화되었습니다.
벤자민 카이저

48

새로운 Xoom을 테스트하는 동안이 문제가 발생했습니다. 이전에 마켓 플레이스에서 앱을 설치했습니다. 나중에 새 버전의 앱을 테스트하는 동안이 오류가 발생했습니다.

마켓 플레이스를 통해 설치된 앱을 제거하여 문제를 해결했습니다 (휴지통을 잡고 드래그). 그 후 아무 문제없이 개발 버전을 배포 할 수있었습니다.


12
예, 제거하면이 권한 문제가 해결됩니다. 제거하지 않고이 문제를 해결할 수 있는지 궁금했습니다.
Johnny

새 전화를 받았는데 잊어 버렸습니다. 이걸 두 번 표시하는 방법 :)
Anthony Horne

22

팀의 다른 개발자가 배포하려는 하드웨어 장치에 앱을 빌드했을 때 이런 일이 발생했습니다. 하드웨어에서 앱을 제거하면 문제가 해결되었습니다.


16
큰! 명령 후에 일했습니다 adb uninstall <package name>. 감사.
Paul

더 독특한 경우가 있었지만이 대답은 해결책으로 이어집니다. 로컬로 cordova CLI를 통해 앱을 설치하고 PG 빌드에서 앱을 설치했습니다. 오류가 사라지려면 두 앱을 모두 제거해야했습니다.
DemitryT

@Paul 당신의 우수성-Paul I 왕, 나는 원래의 질문자가 아니지만, 당신의 명령은 저에게 효과적이었습니다. 답변으로 게시 해 주시겠습니까?
barlop

1
@ barlop :이 문제가 발생할 수있는 다른 사람들에게 더 잘 보이도록 명령에 대한 답변을 게시했습니다. 감사.
Paul

3
이 답변이 왜 투표를했는지 이해가되지 않습니다. 그는 "제거하지 않고"라고 분명히 말합니다! –
기독교

20

adb를 사용하여 장치에서 앱을 제거하는 명령입니다.

adb uninstall <package name>

8
문제는 제거하지 않고 문제를 해결하는 방법에 관한 것입니다.
Janaka Bandara

2
이 답변이 왜 투표를했는지 이해가되지 않습니다. 그는 "제거하지 않고"라고 분명히 말합니다!
Christian

일치하지 않는 인증서로 패키지를 교체하기위한 pm 플래그가 없습니다. 보안 의도?
JohnyTex

9

신비로운 원래 APK를 제거한 후에도이 오류가 발생했습니다. 마지막으로 테스트를 위해 Nexus 7에서 여러 명의 사용자를 설정했으며 다른 사용자 중 한 사람을 위해 앱이 여전히 설치되어 있음을 깨달았습니다. 모든 사용자를 위해 제거하면 오류가 사라졌습니다.


5

설치된 이전 버전을 삭제하지 않고 Eclipse를 통해 내 장치에서 디버깅 할 수 있도록 업데이트를 코딩하는 동안 패키지 이름을 변경했습니다. 다시 설치하려고 할 때 사용한 패키지 이름을 되 돌리지 않고이 오류가 발생했습니다. 동일한 패키지 이름을 사용하여 재설치에 성공했습니다.


3

장치에서 이전 빌드를 삭제하고 다시 설치하십시오. device.keystore가 이미 장치에 존재하므로 빌드를 제거하고 APK 만 설치하면됩니다.

감사


예, CommonsWare의 답변이 더 명확하고 명확합니다. 감사합니다
tres.14159

3

비슷한 오류가 발생하는 또 다른 사용 사례에 직면했습니다. 처음에 오류가 발생했을 때 당황하고 제거했습니다. /data/data/{package.name} 그 후 시도했지만 여전히 문제가 있습니다. 그런 다음 제거를 시도했지만 실패했습니다.

그런 다음 /system/app(루트 액세스 필요) 에있는 apk 파일을 제거하고 제거를 시도했지만 성공했습니다.

그 후 apk를 다시 설치하려고 시도했지만 효과가있었습니다.


1

가치있는 것을 위해 Cordova 프로젝트에 새 플러그인을 추가 한 후이 문제가 발생했습니다. 나는 cordova가 USB를 통해 장치에 직접 빌드하고 설치하도록했습니다.

장치에서 앱을 제거하여 문제를 해결했으며 다음 배포에서는 아무런 문제가 없었습니다.


1

출력 창에서 "Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]"오류와 함께 Andorid 장치 또는 에뮬레이터에 배포하지 못한 경우 장치 또는 에뮬레이터에서 기존 앱을 삭제하고 다시 배포하십시오. 디버그 빌드는 디버그 인증서를 사용하고 릴리스 빌드는 구성된 인증서를 사용합니다. 이 오류는 단순히 기기에 설치된 앱의 인증서가 설치하려는 인증서와 다르다는 것을 알려줍니다. 비 개발 (앱 스토어) 시나리오에서 이는 디바이스에 설치하기에 안전하지 않은 손상되었거나 수정 된 앱의 표시 일 수 있습니다.


0

위에서 아무것도 아무것도 나를 위해 일하지 않았다. 나에게 문제는 android-support-v7-appcompat에 대한 Java 빌드 경로에 잘못된 소스가 있다는 것입니다. 프로젝트> 빌드 경로> 빌드 경로 구성>으로 이동하십시오. 소스 탭 아래에 android-support-v7-appcompat / gen, android-support-v7-appcompat / libs 및 android-support-v7-appcompat / src가 있는지 확인하십시오. 확인을 클릭하면 작동합니다.


0

오늘 같은 오류가 있었지만 문제는 정확히 같지 않았습니다. VirtualBox에 Android가 설치된 ADB를 사용하고 있습니다. 내 응용 프로그램 (서명 /하지 서명, 디버그 / 릴리즈 모드)의 다른 버전을 설치하려고하고 두 가지 오류 교대로 가지고 : INSTALL_FAILED_UID_CHANGEDINSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES .

이제를 볼 때 /data/data/{package.name}앱을 제거한 후에도 여전히 존재하는 많은 파일을 발견했습니다. 나는 rm -rf성공하지 않고 그들에게 노력했다 : I / O 오류가 발생했다.

이에 대한 해결책은 다음과 같습니다.

  • VM 종료
  • vdfuse(읽기 / 쓰기)로 VDI 이미지 마운트
  • 수리 Partition1와 이미지 파일을e2fsck
  • VM 마운트 해제 및 다시 시작

0

시뮬레이터가 실행 중이고 adb가 설치하려고한다는 것을 알 때까지 동일한 문제가 발생했습니다.


0

확인은 패키지 이름을 기반으로하기 때문에 config.xml 또는 매니페스트 파일 내에서 원하는 다른 이름으로 패키지 이름을 변경할 수 있습니다.

앱을 게시 할 때 이름을 다시 변경 하는 것을 잊지 마십시오 !


0

Genymotion에서 gradle 작업 connectedDebugAndoidTest(또는 connectedAndroidTest) 을 실행하려고하는 데이 문제 가 있었습니다 . 일반 에뮬레이터 에서 실행 하면 문제가 해결되었습니다.


나는 또한 같은 상황에서 이것을 얻었습니다 (Genymotion으로 테스트). 테스트 패키지의 서명과 충돌 한 것으로 나타났습니다. 테스트 패키지를 제거하면 문제가 해결되었습니다.
D-C0d3r

0

내 앱이 다른 계정으로 설치되었다고 생각합니다. (여러 계정 모드 기능) 설정> 앱> "앱 이름"> 제거

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.