Universal Installer
1.18.0 · GitHub
More about this app
Install and manage APK packages with split APK support, silent install via Shizuku, and VirusTotal malware scanning
Universal Installer
A modern, powerful Android package manager and sideloading tool for Phones, Android TV, and Wear OS.
Download
Supported Platforms
| Platform | Module | Description |
|---|---|---|
| ๐ฑ Phone & Tablet | :app |
Material 3 UI, dynamic colors & spring animations |
| ๐บ Android TV | :tv |
D-pad navigation, 10-foot UI with QR code pairing & remote receive |
| โ Wear OS | :wearos |
Wear Compose UI for smartwatch package management & install |
Supported Formats
- Single APK:
.apk - Split APK Bundles:
.apks,.xapk,.apkm,.apk+ - Manual Splits: Merge multiple individual
.apkfiles into a single installation session - Game Data: Automatic extraction & background placement of
.obbexpansion files
Key Features
โก Flexible Installation Backends:
- Standard system installer, Shizuku, and Root (libsu). On phones and tablets, Porter can serve the Shizuku engine too.
- Silent install and uninstall without prompts.
- Privileged controls: allow downgrade, bypass minimum SDK restrictions, grant permissions, install for all users, and spoof installer package names (Google Play, F-Droid, Aurora Store, Amazon, etc.).
๐ฆ Seamless OBB Support:
- Auto-extracts
.obbfiles from XAPK/APKM archives directly toAndroid/obb/<package>/. - Attach standalone OBB files to APK installs.
- Multi-tier write strategy: Direct I/O, Shizuku, or Storage Access Framework (SAF).
- Auto-extracts
๐ก๏ธ VirusTotal Security:
- Automatic SHA-256 hash lookup before install.
- Engine detection breakdown (malicious, suspicious, clean).
- On-demand file upload scan for unindexed packages (up to 650 MB).
๐ Local Sharing & Send to TV:
- Built-in HTTP server and web dashboard for transferring APKs from PC or mobile browser.
- Push packages directly to Android TV via QR code scanning.
- Optional PIN security for local network access.
๐๏ธ App Manager:
- Inspect installed user & system apps with rich details (SDK targets, size, permissions, signatures).
- Sort and filter by name, install date, size, or last used time.
- Batch uninstall with detailed status logs.
๐ฅ Remote Downloader & Intake:
- Download APK packages directly from web URLs with download history.
- Deep-link and intent handling to open packages from browsers, messaging apps, and file managers.
Tech Stack
- UI: Jetpack Compose, Wear Compose, Material 3
- Installer Engine: Ackpine & Shizuku (or Porter through its Shizuku-API bridge)
- Networking: Ktor
- Storage & Async: Room, DataStore, WorkManager
- Dependency Injection: Koin
Project Structure
โโโ app/ # Android Phone & Tablet application
โโโ tv/ # Android TV application
โโโ wearos/ # Wear OS smartwatch application
โโโ core/ # Shared engine (package parsing, installers, storage, networking)
โโโ updater/ # In-app update checking logic
Building from Source
Prerequisites
- Android Studio Ladybug or newer
- JDK 17+
- Android SDK 36
Build Commands
# Build Phone app (open-source flavor)
./gradlew :app:assembleOpensourceDebug
# Build Android TV app
./gradlew :tv:assembleDebug
# Build Wear OS app
./gradlew :wearos:assembleDebug
# Build all debug variants
./gradlew assembleDebug
Note: The
playflavor of:apprequiresapp/src/play/google-services.json(see docs/FIREBASE.md). Without it, build theopensourceflavor.
Contributing & License
- Issues & Requests: GitHub Issues
- License: GNU General Public License v3.0 (GPL-3.0)
- Maintainer: Nguyen Quang Minh
How Shizuku is used
Can silently install and uninstall apps, manage apps, copy game data and set default installer via `Shizuku`
This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.
How this app uses Shizuku
Shizuku lets this installer perform silent installs and privileged app management without system prompts.
- Install apps silently: APKs and split APKs install in the background through a privileged install session, with options for replacing existing apps, downgrades, granting permissions, installing for all users and spoofing the installer name.
- Install for specific user: installs can target a chosen user or work profile by creating a package session for that user and committing it with
pm install-committhrough Shizuku. - Uninstall apps silently: user apps uninstall in the background through a privileged session without confirmation, with options for system apps and targeting the main user.
- Remove or disable system apps: system apps that cannot be removed normally are uninstalled for the main user with
pm uninstall --user 0through Shizuku, or disabled withpm disable-user --user 0instead. - Enable or disable apps: any app, including the system package installer, can be frozen or re-enabled with
pm disable-user --user 0andpm enablethrough Shizuku. - Force stop and launch apps: running apps can be stopped with
am force-stopand launched withmonkeythrough Shizuku from the management list. - Clear app data: cache, data and game files for an app can be wiped with
pm clearthrough Shizuku. - Speed up new installs: freshly installed apps can be optimized with
cmd package compilethrough Shizuku. - Harden install sources: install permission can be revoked from other apps with
appops set ... REQUEST_INSTALL_PACKAGES ignorethrough Shizuku. - Copy game data files: bundled OBB data is written to shared storage by creating the folder with
mkdir -pand piping bytes throughcatin a Shizuku shell process, with cleanup byrm -fon failure. - Pick install target user: all device users and work profiles are listed through the system user service via Shizuku so installs can target a specific user.
- Become default installer: the app can register itself as the preferred handler for APK files through the system package service via Shizuku.
Android APIs or commands used
android.content.pm.PackageInstallerIUserManager.getUsersIPackageManager.addPreferredActivityIPackageManager.clearPackagePreferredActivitiesIPackageManager.queryIntentActivitiesIPackageManager.setApplicationEnabledSettingIPackageInstaller.openSessionIPackageInstallerSession.openWritepm uninstall --user 0pm disable-user --user 0pm enablepm clearpm install-commitam force-stopappops setcmd package compile -m speed -fmonkey -pmkdir -pcat >rm -fsh -c
Notable details
Without Shizuku the app still installs with the normal system installer and session flow, and OBB files can be written directly or with a folder grant.
Changelog
What's new for version 1.18.0
๐ฑ Phone (App)
- Added optional OBB and media data expansion backup into .xapk
- Improved app update tracking and installation state detection
- Added shimmer loading skeleton on updates list
- Standardized installer error states and onboarding flow
- UI and navigation bar inset refinements
- Added Bengali (bn) language support
๐บ Android TV
- Fixed app freezing when opening add app dialog
- Aligned updates category filters for TV remote navigation
- Added Bengali (bn) language support
- Stability improvements and bug fixes
โ Wear OS
- Integrated analytics and error diagnostics
- Added Bengali (bn) language support
- Watch UI refinements and stability improvements
Permissions
15 permissions requested