Repository navigation
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