A minimal Android application for installing APK, XAPK, APKS, APKM, APKV, and ZIP packages, with batch install, install history, a built-in app manager, backup, and uninstaller.
Supports six package formats:
| Format | Description |
|---|---|
| APK | Standard Android package |
| XAPK | APK with OBB expansion data or split APKs bundle |
| APKS | Split APKs archive (SAI format) |
| APKM | Split APKs archive (APKMirror format) |
| APKV | Encrypted or plain split APKs archive (custom format, see APKV spec) |
| ZIP | Generic ZIP archive containing APK split files |
For split APK formats (XAPK, APKS, APKM, APKV, ZIP), individual splits can be selected or deselected before installation. APKV files support optional password-based encryption and integrity verification via SHA-256 checksums.
Packages can also be opened directly from a file manager or browser. VInstall registers itself as a handler for these file types and shows a confirmation sheet with the app details before installing.
Pick several files at once and install them one after another:
- Drag to reorder the queue before starting
- Overall progress is shown as the current file out of the total
- Encrypted APKV files in the queue are marked as locked, tap them to enter the password before installing
- Unreadable files are skipped instead of stopping the whole batch
- Install progress and results are also posted as notifications
Every installation is recorded with its result (success, failed, or cancelled). Tap an entry to see the package name, version, format, file size, install mode, duration, time, and result details. Single records can be deleted, or the whole history can be cleared from Settings.
Three installation modes are available:
- Normal - uses the standard Android package installer
- Root - installs silently using root access
- Shizuku - installs silently via the Shizuku service without requiring full root
Browse all installed user apps with the ability to:
- Search by app name or package name, sort by name, size, install date, or update date, and optionally include system apps
- View app details: version, SDK range, install and update dates, APK size, data directory, split count, and requested permissions
- Launch or open the system app info page
- Export the app as an
.apkvarchive - Uninstall the app (supports Normal, Root, and Shizuku modes)
- Compute and copy the APK hash (MD5, SHA-1, SHA-256)
Export any installed user app as an .apkv archive directly from the App Manager or the dedicated Backup screen. Backups are saved to Documents/VInstall/Backups/ on external storage. Optional password-based encryption is supported when exporting.
| Setting | Description |
|---|---|
| Install mode | Normal, Root, or Shizuku |
| Language | Follow system, English, Bahasa Indonesia, Русский, or 中文(简体) |
| Theme | Light, Dark, or follow system |
| Dialog style | Show dialogs as a Bottom Sheet or an Alert Dialog |
| Confirm before install | Show a confirmation dialog before installing |
| Auto clear cache | Automatically delete temporary files after installation |
| Debug window | Show or hide the in-app log viewer |
| Install history | View, inspect, or clear past installation records |
| Crash reports | Logs can be viewed, copied, or cleared directly from the app |
| Credits | License, open-source libraries, and thanks |
If VInstall crashed during the previous session, a prompt appears on the next launch with a shortcut to the saved report.
- Android 5.0 (API 21) or higher
- "Install unknown apps" permission granted for this app
- "All Files Access" permission required for XAPK packages that include OBB data and for writing backups to external storage (Android 11+)
- Root access required when using Root mode
- Shizuku installed and running when using Shizuku mode
./gradlew assembleDebugBefore triggering a release build, create a keystore and configure the following secrets in your GitHub repository settings:
| Secret | Description |
|---|---|
KEYSTORE_BASE64 |
Base64-encoded .jks keystore file |
STORE_PASSWORD |
Keystore password |
KEY_ALIAS |
Key alias |
KEY_PASSWORD |
Key password |
Then push a tag prefixed with v to trigger the release workflow:
git tag v0.4.5
git push origin v0.4.5The signed release APK will be automatically attached to the corresponding GitHub Release.
Alternatively, you can build a signed release APK locally by adding the following properties to your local.properties file:
STORE_FILE=/absolute/path/to/your/keystore.jks
STORE_PASSWORD=your_store_password
KEY_ALIAS=your_key_alias
KEY_PASSWORD=your_key_passwordThen run:
./gradlew assembleReleaseThe gradle/wrapper/gradle-wrapper.jar file is included in the repository. However, if you want to generate the file again, just type:
gradle wrapper --gradle-version=9.4.1VInstall introduces APKV, a custom container format for archiving and distributing Android application packages. It supports plain and password-encrypted payloads, embeds an application icon, includes integrity checksums per APK file, and includes a structured JSON manifest. The full specification is available in the APKV spec and apkv-cli.
Licensed under the GNU General Public License v3.0.
This project uses the following open-source libraries:
| Library | Author | License | Notes |
|---|---|---|---|
| AndroidX | Apache 2.0 | ||
| Material Components for Android | Apache 2.0 | ||
| Kotlin Coroutines | JetBrains | Apache 2.0 | |
| Gson | Apache 2.0 | ||
| Shizuku API | RikkaApps | MIT | api and provider modules only |
| Poppins | Indian Type Foundry | OFL 1.1 | Typeface |
| Bouncy Castle | The Legion of the Bouncy Castle | MIT-style | Removed in v0.4.2-hotfix2 |