Error: adb: failed to install [PROJECT_PATH]/android/app/build/outputs/apk/debug/app-debug.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Existing package com.app.appname signatures do not match newer version; ignoring!]

Android 디버그/릴리즈 빌드 설치 시 발생하는 서명 불일치 에러 해결 방법



환경 정보

System:
  OS: macOS 15.4.1
  CPU: (10) arm64 Apple M4 Pro
  Memory: 24 GB
SDKs:
  Android SDK: 34
IDEs:
  Android Studio: 2025.3.1
Languages:
  Java: 17.0.9
npmPackages:
  react: 19.1.0
  react-native: 0.81.x

❌ 에러 로그

Error: adb: failed to install [PROJECT_PATH]/android/app/build/outputs/apk/debug/app-debug.apk:
Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Existing package [PACKAGE_NAME] signatures do not match newer version; ignoring!]

📌 원인

Android는 동일한 **패키지명(applicationId)**을 가진 앱이 설치되어 있을 때, **서명(Signature)**이 다르면 덮어쓸 수 없다.

주요 발생 상황:

  1. 기기에 릴리즈 빌드가 설치된 상태에서 디버그 빌드 설치 시도
  2. 서로 다른 키스토어(debug.keystore vs release.keystore)로 빌드된 앱을 같은 패키지명으로 설치하려는 경우

🛠 해결 방법

1. 기존 설치된 앱 삭제 후 재설치

가장 간단한 해결 방법

adb uninstall [PACKAGE_NAME]
npx react-native run-android

2. 디버그/릴리즈 앱 동시 설치

applicationIdSuffix를 추가하여 패키지명을 다르게 설정

android {
    buildTypes {
        debug {
            applicationIdSuffix ".debug"
            versionNameSuffix "-debug"
            signingConfig signingConfigs.debug
        }
        release {
            signingConfig signingConfigs.release
        }
    }
}

설치 결과:

  • 릴리즈 → [PACKAGE_NAME]
  • 디버그 → [PACKAGE_NAME].debug

3. 동일한 키스토어 사용

디버그 빌드도 릴리즈와 같은 키스토어를 사용하면 서명 충돌이 해결

android {
    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            signingConfig signingConfigs.release
        }
    }
}

⚠️ 주의: 이 경우 디버그 빌드에도 릴리즈 키스토어 패스워드가 필요함


✅ 정리

이 에러는 React Native 자체 문제가 아니라 Android의 서명 정책 때문에 발생함

상황별 해결 방법:

  • 단순 테스트adb uninstall 사용
  • 디버그/릴리즈 공존applicationIdSuffix 설정
  • 동일 서명 유지 → 디버그도 릴리즈 키스토어 사용
Error: adb: failed to install [PROJECT_PATH]/android/app/build/outputs/apk/debug/app-debug.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Existing package com.app.appname signatures do not match newer version; ignoring!]