Skip to content

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 04 Apr 10:38
· 13 commits to main since this release

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 1 → 2)
    • 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.4 → 9.4.1

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