What the INSTALL_FAILED_INCOMPATIBLE Error Means
The INSTALL_FAILED_INCOMPATIBLE error is a system Package Manager code in Android that means the installation package (APK) is incompatible with the current device. The system rejects the installation at the verification stage, without waiting for a launch attempt. The full error text is often accompanied by additional details in ADB logs, for example:
Failure [INSTALL_FAILED_INCOMPATIBLE: Package ... does not support screens/layouts ...]
The error appears when attempting installation via Google Play, third-party stores (APKPure, F-Droid), or when manually installing an APK file. It is not related to file corruption or lack of memory, but exclusively to the APK's requirements not matching the device's characteristics.
Causes
The error occurs due to strict compatibility checks performed by Android before installation. Specific causes:
- Android version mismatch (minSdkVersion). The APK's manifest specifies a
minSdkVersion(minimum required OS version) that is higher than the version installed on the device. For example, an app requires Android 10, but the device has Android 9. - Incompatible processor architecture (ABI). The APK is compiled for a specific CPU architecture (armeabi-v7a, arm64-v8a, x86, x86_64). A device with a different ABI cannot run the native libraries (
.sofiles). - Permission or feature conflict. The manifest declares permissions or hardware features (e.g.,
android.hardware.camera.ar) that are absent on the device. If the app uses<uses-feature>withrequired="true"and the feature is not found — installation is blocked. - Signature duplication or package conflict. Another package with the same name but signed with a different key is already installed. Or the APK is signed with a debug key, and the device has the option "Don't allow installation of apps with debug signatures" enabled.
- Screen or locale restrictions. The APK specifies supported screen densities or locales that do not include your device's configuration (rare, but possible).
Method 1: Check and Update Your Android Version
The most common case is an outdated OS.
- Check your Android version: Settings → About phone → Android version.
- If the version is lower than the app's
minSdkVersion, update the OS:- Settings → Update → Check for updates.
- If no official update is available, consider installing a custom ROM (only for advanced users, risk of bricking).
- If updating is impossible, look for an older version of the app (e.g., on APKMirror) that supports your Android version.
⚠️ Important: Installing custom ROMs voids the warranty and can lead to data loss. Make a full backup.
Method 2: Download an APK with the Correct Architecture (ABI)
If the issue is the processor architecture:
- Determine your device's ABI. The easiest way is to install the CPU-Z app from the Play Store. In the "System" section, find "Instruction Sets". Or via ADB:
Example output:adb shell getprop ro.product.cpu.abiarm64-v8a(64-bit ARM) orx86(Intel/AMD). - Find an APK built for your ABI. On sites like APKMirror:
- Select the app version.
- In the "Variants" section, find the APK marked with your architecture (e.g., "arm64-v8a" or "universal").
- Avoid variants labeled "x86" if you have ARM, and vice versa.
- Install the found APK normally (via file manager) or via ADB:
adb install app_correct_abi.apk
Method 3: Install via ADB with Explicit ABI Specification
If the device supports multiple ABIs (e.g., arm64-v8a and armeabi-v7a) and the APK contains libraries only for one, you can force the system loader to use the specified version.
- Ensure USB debugging is enabled (Settings → Developer options → USB debugging).
- Connect the device to a computer with ADB installed.
- Run the command, specifying your ABI:
Replaceadb install --abi armeabi-v7a app.apkarmeabi-v7awith your ABI from step 1. This command forces Package Manager to ignore incompatible libraries and use the specified one.
Method 4: Verify and Fix APK Signing (For Developers)
If you are building the APK yourself:
- Ensure
minSdkVersioninbuild.gradle(app module) does not exceed the Android version on the device:android { defaultConfig { minSdkVersion 21 // For example, Android 5.0 } } - Build a release APK with a real store key, not a debug key:
The key must be specified in./gradlew assembleReleasesigningConfigs. - If you need to install a debug version on a device where "Don't allow installation of apps with debug signatures" is enabled (Settings → Security), disable it temporarily.
Method 5: Disable Compatibility Checks (For Testing Only)
As a last resort, for testing you can bypass the check. Do not use on primary devices!
- Install the APK with the
-tflag, which allows test packages:adb install -t app.apk - If the error is related to missing features, you can try to "trick" the system by adding to
AndroidManifest.xml:
Rebuild the APK. This will allow installation, but the app may crash when trying to use the camera.<uses-feature android:name="android.hardware.camera" android:required="false" />
💡 Tip: For apps you don't develop, Method 5 often doesn't work if the issue is ABI or SDK version. It's better to find the correct APK (Method 2).
Prevention
To avoid the error in the future:
- Always check compatibility before downloading an APK. On repository sites, look for:
- Android version (Min. Android).
- Architecture (ARM, x86).
- Screen size (if specified).
- Use official stores (Google Play). There, APKs are automatically matched to your device.
- For developers: In
build.gradle, specify realisticminSdkVersionandtargetSdkVersion. Build universal APKs (with libraries for all ABIs) or separate ones for each architecture. - Test on real devices with different Android versions and processors before publishing.
If the error occurs in Google Play, your device may not be officially supported by the developer. In that case, look for alternative APK sources or similar apps.