Skip to content

Releases: vinstall/VInstall

v0.4.3-hotfix

19 Apr 09:26

Choose a tag to compare

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
image image

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

11 Apr 02:38

Choose a tag to compare

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 and isPreV11() 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 shizukuPermissionPending flag now prevents the permission dialog from firing multiple times on rapid onResume cycles

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 @SerializedName fields, 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

05 Apr 05:20

Choose a tag to compare

What's Changed

Bug Fixes

  • Fixed encrypt/decrypt failure on release builds — BouncyCastle's PBKDF2WithHmacSHA256 provider was stripped by R8/ProGuard on release builds, causing export to fail with NoSuchAlgorithmException. Replaced with a pure-JVM manual PBKDF2-HMAC-SHA256 implementation (RFC 2898 §5.2) using HmacSHA256. All API levels now use the same implementation — output is byte-for-byte identical to native SecretKeyFactory and BouncyCastle, preserving full cross-version decryption compatibility.

Full Changelog: v0.4.2-hotfix...v0.4.2-hotfix2

v0.4.2-hotfix

05 Apr 02:51

Choose a tag to compare

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() and requestPermission() on onResume is now protected with try/catch
  • Fixed encrypt/decrypt failure on Android 7.1 and belowPBKDF2WithHmacSHA256 is 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 failurenewProcess availability 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

04 Apr 10:38

Choose a tag to compare

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 else branch in signingConfigs to read from local.properties when KEYSTORE_BASE64 env var is not set

Features

  • Synced with APKV spec v2 (formatVersion bumped from 12)
    • Added minSdkVersion, targetSdkVersion, totalSize, permissions, labels, and checksums fields to ApkvManifest
    • Added labels and exportedAt fields to ApkvHeader
  • Added checksum verification on install — SHA-256 checksums are now computed at export time and verified before installing; mismatch triggers an onChecksumMismatch callback
  • Added computeChecksums() in ApkvExporter — generates sha256:<hex> per APK file
  • Replaced CipherInputStream with manual chunk-based cipher streaming in writeEncrypted() 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, and KEY_PASSWORD in local.properties, then run ./gradlew assembleRelease
  • Added exportedAt timestamp parameter passed through to writeEncrypted()

Docs

  • Expanded Release into two subsections: Using GitHub Actions (CI) and Using 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.49.4.1

APKV-Spec (v2): https://github.com/vinstall/apkv-spec
Full Changelog: v0.4.1...v0.4.2

v0.4.1

04 Apr 04:01

Choose a tag to compare

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_OK instead of catching PackageNotFoundException
  • Fixed ACTION_DELETE replaced with ACTION_UNINSTALL_PACKAGE + EXTRA_RETURN_RESULT for proper result callback
  • Fixed permissions list display — newline escape \\n corrected to \n
  • Fixed pathPattern escape in AndroidManifest.xml for .xapk, .apks, .apkm, .zip
  • Added REQUEST_DELETE_PACKAGES permission to manifest

Improvements

  • Reorganized file structure for better maintainability
    • Moved RootHelperroot/ package (consistent with shizuku/)
    • Moved UninstallHelper, InstallHelperinstaller/ package
    • Moved ApkvExporterapkv/ package
    • Extracted InstallMode enum into its own file settings/InstallMode.kt
  • Added @OptIn(ExperimentalCoroutinesApi) on InstallHelper.reset()

Full Changelog: v0.4.0...v0.4.1

v0.4.0

03 Apr 14:11

Choose a tag to compare