Releases: vinstall/VInstall
v0.4.3-hotfix
What's Changed
New Features
- Request Permission: now, you can manually trigger the Shizuku prompt to fix the issue of the Shizuku prompt not appearing, as reported in Issue 2
Bug Fixes
- Shizuku prompt that won't appear: the reason is because you're using an app other than Shizuku (such as Stellar), but I have added a 'Request Permission' button to resolve this issue
- Cache that doesn't get deleted when installation fails: this causes the cache to fill up storage on your device.
Note
Thank you for following VInstall's journey this far :D
Full Changelog: v0.4.3...v0.4.3-hotfix
v0.4.3
What's Changed
New Features
- Persistent crash log, crash reports are now stored across sessions and accessible from Settings → Crash Reports; logs can be viewed, copied, or cleared directly from the app
Bug Fixes
- Fixed crash on Shizuku permission request,
requestPermission()now checks availability andisPreV11()before proceeding, with a proper try/catch fallback to prevent crashes when the Shizuku binder isn't ready (reported: Issues 1) - Fixed duplicate Shizuku permission prompt, a
shizukuPermissionPendingflag now prevents the permission dialog from firing multiple times on rapidonResumecycles
Changes
- Removed DRM check for APKM, DRM-protected APKM detection has been removed; all APKM files are now processed without restriction
- Improved ProGuard rules, added missing keep rules for
model,apkv, Gson@SerializedNamefields, and Shizuku classes to prevent R8 from stripping critical classes in release builds
Full Changelog: v0.4.2-hotfix2...v0.4.3
v0.4.2-hotfix2
What's Changed
Bug Fixes
- Fixed encrypt/decrypt failure on release builds — BouncyCastle's
PBKDF2WithHmacSHA256provider was stripped by R8/ProGuard on release builds, causing export to fail withNoSuchAlgorithmException. Replaced with a pure-JVM manual PBKDF2-HMAC-SHA256 implementation (RFC 2898 §5.2) usingHmacSHA256. All API levels now use the same implementation — output is byte-for-byte identical to nativeSecretKeyFactoryand BouncyCastle, preserving full cross-version decryption compatibility.
Full Changelog: v0.4.2-hotfix...v0.4.2-hotfix2
v0.4.2-hotfix
What's Changed
Warning
Please upgrade to v0.4.2-hotfix2 as the release version v0.4.2-hotfix has a critical bug for API Level 25 and below, thank you for your attention!
Note
v0.4.2-hotfix is critically broken on release builds and should not be used. The BouncyCastle fallback introduced in that release was silently stripped by R8 during release compilation, causing all encrypted export/import operations to fail at runtime. Debug builds were unaffected, masking the issue during testing. Upgrade to v0.4.2-hotfix2.
Bug Fixes
- Fixed crash on Shizuku permission request — race condition between
isAvailable()andrequestPermission()ononResumeis now protected with try/catch - Fixed encrypt/decrypt failure on Android 7.1 and below —
PBKDF2WithHmacSHA256is unavailable in the native JCE provider before API 26; the app now automatically falls back to BouncyCastle on affected devices while API 26+ continues to use the native provider - Fixed silent Shizuku install/uninstall failure —
newProcessavailability is now checked before execution; install falls back to the session installer and uninstall returns a clear error message if unavailable
Docs
- Added Credits section to README
Full Changelog: v0.4.2...v0.4.2-hotfix
v0.4.2
What's Changed
Warning
Breaking Change: Encrypted .apkv archives created with v0.4.1 or below are not compatible with the updated decryption implementation in this release. We sincerely apologize for the inconvenience this may cause, and thank you for your continued support.
Bug Fixes
- Fixed missing signing config for local builds — added
elsebranch insigningConfigsto read fromlocal.propertieswhenKEYSTORE_BASE64env var is not set
Features
- Synced with APKV spec v2 (
formatVersionbumped from1→2)- Added
minSdkVersion,targetSdkVersion,totalSize,permissions,labels, andchecksumsfields toApkvManifest - Added
labelsandexportedAtfields toApkvHeader
- Added
- Added checksum verification on install — SHA-256 checksums are now computed at export time and verified before installing; mismatch triggers an
onChecksumMismatchcallback - Added
computeChecksums()inApkvExporter— generatessha256:<hex>per APK file - Replaced
CipherInputStreamwith manual chunk-based cipher streaming inwriteEncrypted()for more explicit control over encryption output - Scrubbed decrypted manifest bytes from memory after parsing (
decrypted.fill(0))
Improvements
- Added support for local keystore builds — configure
STORE_FILE,STORE_PASSWORD,KEY_ALIAS, andKEY_PASSWORDinlocal.properties, then run./gradlew assembleRelease - Added
exportedAttimestamp parameter passed through towriteEncrypted()
Docs
- Expanded
Releaseinto two subsections:Using GitHub Actions (CI)andUsing a Local Keystore - Updated "All Files Access" requirement — now notes it's also needed for writing backups to external storage
- Updated Gradle wrapper version:
8.4→9.4.1
APKV-Spec (v2): https://github.com/vinstall/apkv-spec
Full Changelog: v0.4.1...v0.4.2
v0.4.1
What's Changed
Bug Fixes
- Fixed normal mode uninstall UI being obscured by the status bar (
AppDetailActivity,AppManagerActivity) - Fixed uninstall result detection — now uses
RESULT_OKinstead of catchingPackageNotFoundException - Fixed
ACTION_DELETEreplaced withACTION_UNINSTALL_PACKAGE+EXTRA_RETURN_RESULTfor proper result callback - Fixed permissions list display — newline escape
\\ncorrected to\n - Fixed
pathPatternescape inAndroidManifest.xmlfor.xapk,.apks,.apkm,.zip - Added
REQUEST_DELETE_PACKAGESpermission to manifest
Improvements
- Reorganized file structure for better maintainability
- Moved
RootHelper→root/package (consistent withshizuku/) - Moved
UninstallHelper,InstallHelper→installer/package - Moved
ApkvExporter→apkv/package - Extracted
InstallModeenum into its own filesettings/InstallMode.kt
- Moved
- Added
@OptIn(ExperimentalCoroutinesApi)onInstallHelper.reset()
Full Changelog: v0.4.0...v0.4.1
v0.4.0
Full Changelog: https://github.com/vinstall/VInstall/commits/v0.4.0