Universal Installer iconUniversal Installer
User guide

How to use Universal Installer

Everything from your first install to the options most people never need — plus straight answers for the errors that come up most.

What is Universal Installer?

A package installer for Android. It handles the formats the built-in installer cannot — split APK bundles, XAPK archives with OBB data — and gives you control over how each install happens, rather than a single confirm button.

It works with no setup at all. Shizuku, root or Dhizuku are optional, and only unlock silent installs and the advanced options.

Quick start

  1. Install Universal Installer and open it. On first run it asks for permission to install apps — Android requires this of any installer.
  2. Tap the pick button and choose an APK, or open an APK from any file manager and pick Universal Installer.
  3. The details sheet shows the app name, version, size and what is inside the package. Tap Details to see permissions and splits, or just tap Install.
  4. If anything about the package is risky — a downgrade, a signature mismatch, a VirusTotal detection — you get a warning first, with the fix offered right there.

Install modes

The mode decides how the install is performed. You pick it in Settings → Installation.

Package Installer (default)

No setup. Android shows its own confirmation for every install. All the advanced options below are ignored in this mode, because the system does not let a normal app use them.

Shizuku

Installs silently and unlocks every option below. Needs the Shizuku app installed and running — started over wireless debugging or root. Shizuku has to be restarted after each reboot unless your device is rooted.

Root

Installs silently with no extra app to keep running. Needs a rooted device (Magisk, KernelSU and similar).

Dhizuku

Silent installs with neither root nor ADB, shown as its own switch rather than a fourth mode. Dhizuku runs as device owner, so unlike Shizuku it keeps working after a reboot with nothing to restart. The catch is setup — device owner can only be granted on a device with no accounts signed in — and it supports Allow downgrade only; the other options below need Shizuku or Root.

Supported formats

APK, APKS, XAPK, APKM, APK+ and ZIP archives that contain a package. Split bundles are unpacked and installed as one app, and OBB data inside an XAPK is copied to the right folder afterwards.

For split bundles you can choose which splits to include — languages, screen densities and CPU architectures you do not need can be left out to save space.

Install options

These need Shizuku or Root. Dhizuku supports only Allow downgrade, and on the default mode none of them have any effect.

Replace existing

On by default

Lets an install overwrite an app that is already there — a normal update. With it off, updating fails with a package-conflict error.

Allow downgrade

Off by default

Required to install an older version over a newer one. Replace existing does not cover this; they are separate rules in Android.

Grant all permissions

Off by default

Grants every runtime permission the app declares, at install time, so it never prompts you.

Allow test packages

Off by default

Accepts APKs built as debug/test packages, which Android otherwise refuses.

Bypass low target SDK block

Off by default

Android 14 and later refuse apps that target very old SDK versions. This skips that check. Only available on Android 14+.

Install for all users

Off by default

Installs into every user profile on the device rather than only the current one.

Change installation source

Off by default

Records a different app as the installer — useful when an app checks where it came from. See the troubleshooting note on its limits.

Installer profiles

A profile is a saved set of the options above that you attach to specific apps. Instead of flipping switches before each install, you set a profile once and it applies whenever you install that app. Without a profile, the global settings apply.

VirusTotal scanning

Any package can be checked against VirusTotal before you install it. It needs a free API key: get one at virustotal.com and paste it into Settings → Advanced.

Scanning is manual — tap Check with VirusTotal on the install screen. Turn on strict mode to be warned whenever you are about to install something that has never been scanned.

Android TV

There is a separate Android TV build with a D-pad-first interface. Send packages from your phone over Wi-Fi, browse what is already on the box, and install without fighting a touch UI with a remote.

It is in closed testing — join the TV beta. It has its own package name, so it installs alongside the phone app rather than replacing it.

Troubleshooting

“A conflicting version is already installed” — but Replace existing is on

Three different problems produce a similar error. If you are installing an older version, you need Allow downgrade, not Replace existing. If the installed app was signed with a different key, no option helps at all: Android will not accept the file as an update, so the old app has to be uninstalled first and its data is lost. Universal Installer detects the signature case before you commit and offers to uninstall the old copy for you.

Installs keep failing on my Xiaomi / Redmi / POCO device

MIUI and HyperOS have a setting called MIUI optimization that blocks third-party installs without explaining why. Turn it off in Developer options, install, then turn it back on. While it is off the system theme may look wrong — restarting the phone fixes that. The app now points this out in the error itself on Xiaomi hardware.

“Delete APK after installation” did not delete anything

It works for files you pick from inside the app. When you open an APK from a file manager, that app usually shares it in a way that grants no permission to delete it, and there is no supported way around that. You will get a message saying so rather than silence. Deleting it from the file manager is the way to clean up.

I changed the installation source but the app still shows Universal Installer

That setting needs Shizuku or Root — Dhizuku cannot change it either. On the default Package Installer it is ignored, and Universal Installer genuinely is the installer at that point. Also note there are two separate fields: the installer an app is recorded under can be changed, but the app that started the install cannot. And it will not make the Play Store treat an app as installed from Play — Play verifies that on its own servers.

Do I need root?

No. The default mode works on any device with no setup. Shizuku, Root and Dhizuku only add silent installs and the extra options above. Of the three, Dhizuku is the only one that needs neither root nor ADB — but it has to be device owner, which means setting it up on a device with no accounts signed in.

Still stuck? Settings → Diagnostics collects a report you can attach to a GitHub issue. Include your Android version and which install mode you were using — those two answer most questions on their own.