패키지 A(구형/기본 버전)
첫 번째 .apk/.xapk 파일을 클릭하거나 드롭하세요.
패키지 B(신규/업데이트 버전)
두 번째 .apk/.xapk 파일을 클릭하거나 드롭하세요.
APK 버전을 비교하면 업데이트 실패를 방지할 수 있는 이유
기존 설치 위에 최신 버전의 Android 앱을 설치하는 경우 Android의 PackageManager는 두 가지 엄격한 규칙을 적용합니다. 즉, 새 패키지의 versionCode는 설치된 빌드보다 크거나 같아야 하며, 또는 APK 서명 블록 v2/v3 내부의 서명 인증서는 바이트 단위로 동일해야 합니다. META-INF/
- 서명 인증서 다이제스트 일치: 두 패키지 모두에서 .RSA / .DSA / .EC 서명 블록의 SHA-256 지문을 계산하므로 제거하지 않고도 전체 업데이트가 성공하는지 즉시 알 수 있습니다.
- 네이티브 ABI 및 DEX 차이점: 업데이트가 32비트 armeabi-v7a 라이브러리를 제거했는지 아니면 새 classes*.dex 파일을 추가했는지 여부를 강조 표시합니다.
- CRC32 엔트리 델타: 빌드 간에 추가되거나 제거된 정확한 파일을 나열합니다.
Android가 패키지 업데이트를 평가하는 방법(INSTALL_FAILED_UPDATE_INCOMPATIBLE)
사이드로드된 앱을 업데이트할 때 사용자가 직면하는 가장 빈번한 오류 중 하나는 ADB 로그에서는 INSTALL_FAILED_UPDATE_INCOMPATIBLE로 알려짐입니다. 이는 설치된 앱이 Google Play 스토어에서 제공되고(개발자의 개인 릴리스 키로 서명됨) 업데이트가 분할 .xapk 아카이브(분할 병합 후 변환기 서명 키로 다시 서명되어야 함)에서 변환될 때마다 발생합니다. "패키지가 기존 패키지와 충돌하여 앱이 설치되지 않았습니다."
그러나 이전 버전과 새 버전이 모두 xapktoapk.com를 사용하여 변환된 경우 결정적 서명 파이프라인은 변환 전반에 걸쳐 동일하고 일관된 서명 인증서를 사용합니다. 즉, 인앱 진행 상황을 제거하거나 손실하지 않고 변환된 새 APK를 이전 변환된 APK 위에 직접 설치할 수 있다는 의미입니다! 설치하기 전에 위의 비교 도구를 사용하여 두 파일이 동일한 인증서 다이제스트를 공유하는지 확인하세요.