How to Fix "App Not Installed" and "There Was a Problem Parsing the Package"
Work through the real causes behind "App not installed" and "problem parsing the package": damaged files, bundles, signature conflicts, downgrades and more.
Both messages come from Android's Package Installer, and both are vague on purpose: the dialog hides the technical reason behind a one-line summary. The fix depends entirely on that hidden reason, so this guide works through the causes in the order they usually turn up, then shows how to get the exact error code from a computer when guessing doesn't work.
What each message usually points to
- "There was a problem parsing the package" means Android couldn't read the file as a valid APK. Typical causes: an incomplete or damaged download, a file that isn't a plain APK (an XAPK or APKS renamed or opened the wrong way), or an app built for a newer Android version than yours. Older Android versions often report that last case as a parse error.
- "App not installed" means the file was read but the install was refused. Typical causes: a signature conflict with an app already on the phone, a version downgrade, incompatible hardware or Android version, not enough storage, or a policy block. Recent Android versions often add a reason, such as "as package conflicts with an existing package" or "as app isn't compatible with your phone". The wording varies by Android version and manufacturer.
Step 1: Confirm the file is complete
A truncated download is the single most common cause of parse errors.
- Compare the file size on your phone with the size on the download page.
- If the page lists a SHA-256 checksum, compare it. The guide to verifying an APK's SHA-256 checksum covers doing that on the phone and on a computer.
- If anything differs, delete the file and download it again on a stable connection.
- Save the APK to local storage, usually the Downloads folder, and open it from there. Opening an APK straight from inside a ZIP preview, a messaging app or a cloud-storage preview often fails.
Step 2: Make sure it's a single APK, not a bundle
If the file ends in .xapk, .apks or .apkm, or someone renamed one of those to .apk, the system installer can't handle it. Bundles hold several split APKs, sometimes with OBB game data, and need an installer that supports them. Installing only the base.apk from a bundle can also fail, or install an app that crashes at once because its other parts are missing. See APK vs XAPK vs APKS vs APKM for what each format contains.
Step 3: Check for a signature conflict
Android allows only one signing key per package name. If an app with the same package name is already installed and was signed with a different key, for example the Play Store version of an app you're replacing with a modified build or the reverse, the update is refused.
The fix is to remove the installed copy first:
- Back up anything you can: sign in to the app's account or cloud save, and export settings if the app offers it.
- Uninstall the existing app. This deletes its local data on the phone.
- Install the new file.
If Android still reports a conflict after you've uninstalled, the app is probably still present somewhere else on the phone:
- Another user or a work profile. On some phones the app info page has a menu option such as Uninstall for all users.
- A cloned or "dual" copy made by the manufacturer's app-cloning feature, or a copy inside a secure folder.
- A disabled system app with the same package name. It can't be removed without root, so a differently signed build of that package won't install.
Step 4: Rule out a downgrade
Every APK carries an internal version code. Android refuses to install a file whose version code is lower than the installed app's, even if both come from the same signer. Either get the same or a newer version, or uninstall first and accept losing local data.
Step 5: Check Android version and CPU compatibility
- Minimum Android version. If the app requires a newer release than your phone runs, it won't install. Look up your version under Settings > About phone > Android version. The path differs by manufacturer; on Samsung it's under About phone > Software information.
- CPU architecture. An APK that contains native code only for
arm64-v8awon't install on a phone that runs a 32-bit system, and the reverse is true on 64-bit-only phones. The guide to finding your Android version and CPU architecture explains how to check and which build to pick. - Very old apps on new Android. Android 14 and later refuse to install apps that target very old API levels (below Android 6.0). Only an updated build of the app solves this.
Step 6: Free up storage
The installer needs room for the downloaded file and for the installed copy, plus some working space while the app is optimized. With only a little free space left, installs fail even when the APK itself is small. Clear space first; freeing storage for large games lists what is reasonable to delete. A storage tool such as Disk & Storage Analyzer can show where the space has gone.
Step 7: Permissions and policy blocks
- Install unknown apps. Since Android 8.0 this is granted per app. Allow it for the app that opens the file (your browser or file manager) under Settings > Apps > Special app access > Install unknown apps. Menu names vary by manufacturer. Android special permissions explained covers what this permission does.
- Google Play Protect. Keep it on. If it blocks or warns about an install, read the reason it gives. A warning about an unrecognized app is different from a detection of known harmful behavior; if it reports harmful behavior, don't install the file.
- Managed devices. On work or school phones an administrator policy can block installs from outside the approved store. Only the administrator can change that.
Get the exact reason with adb
If none of the above fixes it, a computer will tell you the real cause. Turn on Developer options and USB debugging, connect the phone, and run:
adb install app.apk
The command prints a Failure [...] code instead of the generic dialog. Common ones:
| Code | Meaning |
|---|---|
INSTALL_FAILED_UPDATE_INCOMPATIBLE | Signature differs from the installed app (Step 3) |
INSTALL_FAILED_VERSION_DOWNGRADE | Lower version code than installed (Step 4) |
INSTALL_FAILED_OLDER_SDK | Needs a newer Android version (Step 5) |
INSTALL_FAILED_NO_MATCHING_ABIS | No native code for your CPU architecture (Step 5) |
INSTALL_FAILED_DEPRECATED_SDK_VERSION | Targets an API level too old for Android 14 and later (Step 5) |
INSTALL_FAILED_INSUFFICIENT_STORAGE | Not enough free space (Step 6) |
INSTALL_FAILED_MISSING_SPLIT | Base APK installed without its required splits (Step 2) |
INSTALL_PARSE_FAILED_NO_CERTIFICATES | The APK is unsigned or its signature is broken (Step 1) |
To find a leftover copy from Step 3, adb shell pm list packages lists every package name on the phone; pipe it through grep on macOS or Linux, or findstr on Windows, to filter by name.
FAQ
Will restarting the phone help? Sometimes. A stuck install session or a storage-cleanup task can block the installer, and a restart clears both. It won't fix a signature conflict, a downgrade or an incompatible build.
Can I keep my data when switching between the Play version and a modified build? No. The two are signed with different keys, so you must uninstall one before installing the other, and local data goes with it. Progress survives only if the app syncs it to an account or cloud save.
Every APK I try fails on this phone. What's left?
Check Step 7 first, since a missing "Install unknown apps" permission or a device policy affects every file. If that's fine, run adb install on one file to read the actual code. Whatever you install, whether from TechBigs or anywhere else, keep Play Protect on throughout.