How to Fix ADB Install Failed Errors (All Error Codes)
Running adb install and getting a cryptic INSTALL_FAILED_* error back is one of the most common friction points when working with Android APKs. Each error code has a specific meaning and a specific fix — this guide covers all the common ones with the exact command variations you need.
If your device is not even being detected before you get to the install step, check our guide on fixing the ADB device not found error first.
The basic install command is:
adb install yourapp.apk
But as you will see, most failure modes require additional flags. Here is a complete reference for each error code.
INSTALL_FAILED_ALREADY_EXISTS
adb: failed to install yourapp.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Package com.example.app already exists]
This error means the app is already installed on the device. A plain adb install refuses to overwrite an existing installation. The fix is the -r flag (replace), which reinstalls the APK while preserving the app's data:
adb install -r yourapp.apk
If you want to completely remove the old version and install fresh (wiping app data in the process), uninstall first:
adb uninstall com.example.app
adb install yourapp.apk
Replace com.example.app with the actual package name of the app. To find the package name of an installed app, run adb shell pm list packages and search the output.
INSTALL_FAILED_INSUFFICIENT_STORAGE
Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]
The device does not have enough free internal storage to install the APK. Even if the APK file itself is small, Android needs additional space for the installation process, unpacked dex files, and native libraries.
To check available storage from ADB:
adb shell df /data
Resolution steps:
- On the device, go to Settings > Storage and review what is consuming space.
- Clear cache for large apps: Settings > Apps > [App Name] > Storage > Clear Cache.
- Delete unused apps, photos, or files to free up space.
- If you want to install to external storage (only works for apps that support it), add the
-sflag:adb install -s yourapp.apk. Note that very few apps support SD card installation and this is not reliable on modern Android versions.
INSTALL_FAILED_VERSION_DOWNGRADE
Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
Android prevents installing an older version of an app over a newer one. This is a security measure to prevent rollback attacks. You will hit this when testing an older build of your own app, restoring from backup, or installing a sideloaded APK with a lower version code than what is already installed.
The fix for debug/development builds is the -d flag:
adb install -d yourapp.apk
You can combine flags — for example, reinstall an older version:
adb install -r -d yourapp.apk
Important limitation: The -d flag only works for debug builds (where android:debuggable="true" is set in the manifest). For production-signed release APKs, Android will still reject the downgrade. In that case, you must uninstall the current version first:
adb uninstall com.example.app
adb install yourapp.apk
INSTALL_FAILED_VERIFICATION_FAILURE
Failure [INSTALL_FAILED_VERIFICATION_FAILURE]
Google Play Protect is scanning the APK before installation and blocking it. This happens most often with APKs that are not distributed through the Play Store — which includes legitimate internal test builds, enterprise apps, and APKs from third-party sources.
To resolve this:
- Open the Google Play Store app on your device.
- Tap your profile picture in the top right corner.
- Select Play Protect.
- Tap the gear icon and disable "Scan apps with Play Protect".
- Retry the
adb installcommand. - Re-enable Play Protect after installation if desired.
Alternatively, from ADB you can bypass verification for a single install using:
adb install --bypass-low-target-sdk-block yourapp.apk
Though this flag specifically targets SDK level issues; for general Play Protect blocking, disabling the scan is the more reliable path.
Install APKs Without the Command Line
Andora's drag-and-drop APK installer handles all install flags automatically and gives you clear success or error feedback — no terminal required.
Download Andora Free See All FeaturesINSTALL_FAILED_INVALID_APK
Failure [INSTALL_FAILED_INVALID_APK]
The APK file itself is corrupt, incomplete, or not a valid APK. Common causes include a partial download, a file that was renamed from another format, or an APK that was built incorrectly.
Diagnostic steps:
- Verify the APK is actually a valid ZIP archive (APKs are ZIP files). Try opening it with 7-Zip or WinRAR — if it fails to open, the file is corrupt.
- Check the file size against the expected size. A download that was interrupted will produce a smaller-than-expected file.
- Re-download the APK from the original source.
- If you built the APK yourself, try a clean rebuild: in Android Studio, go to Build > Clean Project, then Build > Rebuild Project.
You can also inspect the APK's basic validity from the command line using aapt (Android Asset Packaging Tool) if you have the SDK installed:
aapt dump badging yourapp.apk
If this command returns errors, the APK is definitively invalid and needs to be rebuilt or re-downloaded.
INSTALL_FAILED_USER_RESTRICTED
Failure [INSTALL_FAILED_USER_RESTRICTED]
The device's security settings are preventing installation of apps from outside the Play Store. On modern Android versions, this is controlled by the "Install unknown apps" permission, which must be granted per-application (the app requesting to install must itself have the permission).
Since ADB installs bypass the normal APK installer UI on most Android versions, you may need to enable a global setting:
- Go to Settings > Security (or Settings > Apps > Special App Access on newer Android).
- Look for "Install unknown apps" or "Unknown sources".
- On Android 8+, this is per-app. Enable it for any file manager or browser you use to initiate installs. For ADB installs specifically, this restriction sometimes applies even through ADB on heavily restricted devices (enterprise MDM devices, for example).
- On Samsung devices, also check Settings > Biometrics and Security > Install Unknown Apps.
If the device is managed by an enterprise MDM policy, the restriction may be enforced remotely and cannot be overridden by the user. Contact your IT administrator in that case.
INSTALL_PARSE_FAILED_NO_CERTIFICATES
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
The APK has not been signed. Every Android APK must be signed with a certificate before it can be installed. This error appears when you try to install a release APK that was built without a signing configuration, or a debug APK where the signing step was skipped.
If you built the APK in Android Studio, ensure you are using a signed build variant. For debug builds, Android Studio should sign them automatically with the debug keystore. For release builds, configure signing in your build.gradle:
android {
signingConfigs {
release {
storeFile file("release.keystore")
storePassword "yourpassword"
keyAlias "yourkey"
keyPassword "yourkeypassword"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
Quick Reference Table
Here is a summary of all the flags discussed:
# Standard install
adb install yourapp.apk
# Replace existing install (keep data)
adb install -r yourapp.apk
# Allow version downgrade (debug builds only)
adb install -d yourapp.apk
# Replace AND allow downgrade
adb install -r -d yourapp.apk
# Install to external storage
adb install -s yourapp.apk
# Grant all runtime permissions automatically
adb install -g yourapp.apk
# Full combination for testing
adb install -r -d -g yourapp.apk
Frequently Asked Questions
What does INSTALL_FAILED_ALREADY_EXISTS mean in ADB?
It means the app is already installed on the device. Use adb install -r yourapp.apk to reinstall (replace) the existing version instead of trying a fresh install.
How do I fix INSTALL_FAILED_VERSION_DOWNGRADE?
Android prevents installing an older version over a newer one by default. Use adb install -d yourapp.apk to allow downgrades. Note this only works on debug builds — production signed apps cannot be downgraded this way.
What causes INSTALL_FAILED_VERIFICATION_FAILURE?
Google Play Protect is scanning the APK and flagging it. Go to the Play Store app, tap your profile, select Play Protect, and temporarily disable "Scan apps with Play Protect". Re-run the install after disabling it.
Can I install APKs without using the command line?
Yes. Andora provides a drag-and-drop APK installer that handles all the ADB install flags automatically. It gives you a clear success or error message without needing to memorize adb command flags.
Conclusion
Every INSTALL_FAILED_* error code points to a specific, solvable problem. The most common ones — ALREADY_EXISTS (add -r), VERSION_DOWNGRADE (add -d), and VERIFICATION_FAILURE (disable Play Protect temporarily) — each have a one-line fix once you know what they mean.
If you want to skip the command line entirely, Andora provides a GUI-based APK installer that handles all of this automatically with drag-and-drop simplicity.
Install APKs the Easy Way
Drag an APK onto Andora and it installs — no flags, no terminal, no error codes to decode. Free for Windows.
Download Free for Windows