Fix INSTALL_FAILED_UPDATE_INCOMPATIBLE When Installing Android APK via ADB

Fix INSTALL_FAILED_UPDATE_INCOMPATIBLE When Installing Android APK via ADB

After building your React Native Android release APK, you may encounter this error when installing it:

adb: failed to install app-release.apk:
Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Existing package signatures do not match newer version]

This means the APK was built successfully, but Android refuses to install it because the app on your device was signed with a different certificate.


Why This Happens

Android requires that any update to an existing app must be signed with the same keystore as the original installation.

Typically this happens when:

  • You installed a debug build previously
  • You switched keystores for your release build
  • You changed your signing configuration

If the signatures don’t match, Android will block the installation.


How to Fix It

Option 1: Uninstall the Existing App (Quick Fix)

adb uninstall com.westminstershortercatechismqa
adb install app-release.apk

Once the old app is removed, the new APK will install normally.

Option 2: Use the Same Release Keystore Every Time

If you want your release APK to update instead of uninstalling each time, configure your signing in:

android/app/build.gradle

android {
  signingConfigs {
    release {
      storeFile file("release.keystore")
      storePassword "your_password"
      keyAlias "your_alias"
      keyPassword "your_password"
    }
  }
  buildTypes {
    release {
      signingConfig signingConfigs.release
    }
  }
}

Summary

SituationSolution
Just testing onceUninstall the old app
Want proper upgradesUse the same keystore for release builds
Only local testingInstall debug APK instead

After applying these fixes, you can install and update your React Native Android app without signature conflicts.

Happy building!

❤️ Support This Blog


If this post helped you, you can support my writing with a small donation. Thank you for reading.


Comments

Popular posts from this blog

fixed: embedded-redis: Unable to run on macOS Sonoma

Copying MDC Context Map in Web Clients: A Comprehensive Guide

Reset user password for your own Ghost blog