How to Fix “App Not Installed” When Sideloading APKs on Android

12 min read Learn why Android shows the “App not installed” error during sideloading and follow a step‑by‑step guide to resolve signature, compatibility, storage and permission issues. October 12, 2026 23:00 How to Fix “App Not Installed” When Sideloading APKs on Android

Why the “App not installed” error appears

When you try to install an APK that wasn’t obtained from the Play Store, Android runs a series of checks before allowing the package to be placed on the device. If any check fails, the system aborts the installation and shows the generic “App not installed” toast. The message is intentionally vague, which makes troubleshooting feel like guesswork.

Typical reasons include:

  • Missing or mismatched digital signature
  • Incompatible minSdkVersion or targetSdkVersion
  • Insufficient storage space
  • Conflicting version already installed
  • Corrupt APK file or incomplete download
  • Device‑specific restrictions (e.g., manufacturer‑added security layers)

The guide below walks you through each check, shows how to read the underlying error code with adb logcat, and offers concrete fixes.

Before you start

Preparing your phone and workstation reduces the chance of data loss and makes the debugging process smoother.

  1. Charge the device to at least 50 %. A sudden power loss during installation can corrupt the app data.
  2. Back up important data. If you need to uninstall a pre‑installed version, a backup ensures you can restore settings later.
  3. Enable Developer Options. Go to Settings > About phone, tap Build number seven times, then return to Settings.
  4. Turn on USB debugging. Inside Settings > System > Advanced > Developer options, enable USB debugging.
  5. Connect the phone to a PC. Install the Android SDK Platform‑Tools (the adb binary) if you haven’t already.
Never enable USB debugging on a device you do not fully control. It grants a connected computer full access to your phone.

Step 1 – Verify the APK’s integrity

A corrupted download is the simplest cause of the error. If the APK came from a website, check its SHA‑256 checksum against the value provided by the author.

shasum -a 256 /path/to/app.apk

If the checksums differ, re‑download the file from a trusted source.

Always obtain APKs from reputable developers or the official site. Unknown sources can hide malicious code.

Step 2 – Allow installations from unknown sources

Android 8.0 (Oreo) and later moved the permission from a global switch to per‑app control.

  • For Android 7 & earlier: Settings > Security > Unknown sources → enable.
  • For Android 8 & later: When you open the APK, the system prompts you to allow the specific app (e.g., Chrome, Files) to install unknown apps. Tap Settings in that prompt and toggle Allow from this source.

If you prefer using the command line, you can grant the permission directly:

adb shell pm grant com.android.chrome android.permission.REQUEST_INSTALL_PACKAGES

Step 3 – Check Android version compatibility

Every APK declares a minSdkVersion. If your device runs an Android version lower than this value, the installer will reject the package.

To inspect the manifest without installing, use aapt dump badging (part of the Android build‑tools) or the simpler apktool:

aapt dump badging app.apk | grep sdkVersion

Typical output:

uses-sdk: minSdkVersion='21' targetSdkVersion='30'

If the minSdkVersion is higher than your device’s API level, you have three options:

  1. Find an older version of the app that supports your OS.
  2. Update the device’s firmware (if a newer Android version is available).
  3. Use a compatibility layer such as Termux to run the app’s code in a sandbox (advanced).

Step 4 – Resolve signature conflicts

If you are trying to update an existing app, the new APK must be signed with the same certificate as the installed version. A mismatch triggers INSTALL_FAILED_UPDATE_INCOMPATIBLE and the generic “App not installed” toast.

Two common scenarios:

  • Official app vs. modded version. The modded APK is signed with a different key. You must uninstall the original app first (data may be lost).
  • Same app built on a different machine. Even if the source code is identical, the signing keystore may differ.

To see the certificate fingerprint of the installed package, run:

adb shell dumpsys package com.example.app | grep -i cert

Compare it with the fingerprint of the APK you intend to install:

keytool -printcert -jarfile app.apk

If they differ, either obtain the correct signed APK or uninstall the existing app:

adb uninstall com.example.app
Uninstalling will delete the app’s private data. Back up any important information first.

Step 5 – Ensure sufficient storage space

Android checks both the free space on the internal storage and the space required for the app’s native libraries. A common mistake is to have enough “available” space but not enough “free” space after accounting for cached data.

Check free space with:

adb shell df /data

If the free space is below the size shown by aapt dump badging (look for packageSize), free up space by clearing cache (Settings > Storage > Cached data) or moving media to an SD card.

Step 6 – Clear the Package Installer cache

Corrupted cache can cause the installer to misinterpret a valid APK.

  • Open Settings > Apps & notifications > See all apps.
  • Tap the three‑dot menu → Show system.
  • Find Package installer (or “Package Installer”) and open it.
  • Tap Storage & cache → Clear cache and Clear storage.

After clearing, try installing the APK again.

Step 7 – Install via ADB (recommended for detailed feedback)

Using the command line gives you the exact error code, which is far more useful than the generic toast.

adb install -r -d app.apk

Flags explained:

  • -r – reinstall the app, keeping its data if the signatures match.
  • -d – allow version code downgrade (useful when the APK’s versionCode is lower than the installed one).

If the command succeeds, you’ll see Success. If it fails, the output will contain a specific error such as INSTALL_FAILED_INSUFFICIENT_STORAGE or INSTALL_PARSE_FAILED_NO_CERTIFICATES. Note the exact phrase for the next troubleshooting step.

Step 8 – Decode common ADB error codes

Below is a quick reference for the most frequent errors and what to do about them.

Error codeMeaningFix
INSTALL_FAILED_INSUFFICIENT_STORAGENot enough free space.Free storage, clear cache, or install on SD card if supported.
INSTALL_FAILED_UPDATE_INCOMPATIBLESignature mismatch with existing app.Uninstall the old version or obtain a correctly signed APK.
INSTALL_PARSE_FAILED_NO_CERTIFICATESAPK is not signed or signature stripped.Re‑sign the APK with a valid keystore (see Step 9) or download a signed version.
INSTALL_FAILED_OLDER_SDKDevice Android version lower than minSdkVersion.Find a compatible version or upgrade the OS.
INSTALL_FAILED_DEXOPTDalvik/ART could not optimize the dex files.Clear Dalvik cache via recovery, or reinstall a non‑obfuscated build.

Step 9 – Re‑sign an APK when needed

If you must install an unsigned or differently signed APK (e.g., a modded version) and you are willing to accept the loss of previous data, you can re‑sign it with your own keystore.

  1. Generate a keystore (once):
    keytool -genkeypair -v -keystore mykey.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias myalias
  2. Use apksigner (included in Android Build‑Tools) to sign:
    apksigner sign --ks mykey.jks --out app-signed.apk app.apk
  3. Verify the signature:
    apksigner verify --verbose app-signed.apk
  4. Install the newly signed APK with adb install.

Remember that a re‑signed APK cannot replace an app that was originally signed with a different certificate. You must uninstall the original first.

Signing an APK you did not create does not make it safe. Only re‑sign apps you trust and understand.

Step 10 – When all else fails: use recovery mode

Some devices block installation of certain file types (e.g., carrier‑branded firmware). As a last resort, you can flash the APK as a zip via a custom recovery (TWRP). This method is advanced and voids warranties, so proceed only if you are comfortable with flashing.

  1. Convert the APK to a zip that TWRP can flash (rename .apk to .zip and ensure the zip contains a proper META-INF/com/google/android/updater-script).
  2. Boot into recovery (usually Power + Volume Up).
  3. Choose Install, select the zip, and swipe to flash.
  4. Reboot and verify the app appears in the launcher.

If flashing fails, revert to the previous backup you made before entering recovery.

Troubleshooting checklist

  • Did you enable Unknown sources for the installer app?
  • Is the APK’s minSdkVersion ≤ your device’s Android version?
  • Do you have at least 150 MB of free internal storage?
  • Is there an existing app with the same package name but a different signature?
  • Did you clear the Package Installer cache?
  • What exact error does adb install report?

Working through the list in order usually isolates the problem within a few minutes.

Final thoughts

The “App not installed” error is intentionally vague, but it’s rarely a mystery once you know which system checks are failing. By verifying the APK, adjusting permissions, confirming compatibility, and using ADB for precise feedback, you can resolve the issue without resorting to risky workarounds.

Keep a copy of the successful adb install command in a notes app; the next time you sideload a new build, you’ll already have the correct flags ready.

User Comments (0)

Add Comment
We'll never share your email with anyone else.