Releases: solrudev/Ackpine
0.10.2
0.10.1
0.10.0
Dependencies
- Updated Gradle wrapper to 8.12.
- Updated Android Gradle Plugin to 8.8.0.
- Updated
apksig
to 8.8.0. - Updated ViewBindingPropertyDelegate to 2.0.0 (sample apps dependency).
- Added
api
dependency on Guava'sListenableFuture
inackpine-splits
. - Added
implementation
dependency onandroidx.concurrent:concurrent-futures
inackpine-splits
andackpine-runtime
. - Changed
ackpine-spits
dependency toackpine-splits-ktx
insample-ktx
.
Bug fixes and improvements
- Repeat displaying confirmation notification if it was dismissed on Android 14+ when session's confirmation is set to
DEFERRED
. - Introduce
SplitPackage
API inackpine-splits
. - Deprecate some APIs for
Apk
sequences inackpine-splits
. Migrate toSplitPackage
API. - Rename
ApkSplits.throwOnInvalidSplitPackage()
toApkSplits.validate()
inackpine-splits
. - Add support for cancellation in
Apk.fromUri()
inackpine-splits
.
Public API changes
- Added
SplitPackage
and related APIs inackpine-splits
. - Added
ackpine-splits-ktx
module. - Added
Apk.fromUri()
overload acceptingCancellationSignal
inackpine-splits
. - Added
ApkSplits.validate()
inackpine-splits
. - Exposed
CloseableSequence
interface inackpine-splits
. - Deprecated with warning
ApkSplits.throwOnInvalidSplitPackage()
,ApkSplits.sortedByCompatibility()
,ApkSplits.filterCompatible()
andApkSplits.addAllTo()
methods inackpine-splits
. - Changed return type of
ZippedApkSplits.getApksForFile()
andZippedApkSplits.getApksForUri()
toCloseableSequence<Apk>
inackpine-splits
. - Removed deprecated
SessionResult
andSession.await()
overload inackpine-ktx
.
0.9.4
Bug fixes and improvements
- Correct error handling when closing I/O resources.
0.9.3
Dependencies
- Updated KSP to 2.0.21-1.0.28.
- Updated Android Gradle Plugin to 8.7.3.
- Updated
apksig
to 8.7.3. - Updated
binary-compatibility-validator
to 0.17.0. - Updated
androidx.navigation
to 2.8.5 (sample apps dependency). - Updated Guava to 33.4.0-android (sample apps dependency).
Bug fixes and improvements
- Raise
compileSdk
to 35. - Use random access when parsing APK on API level 26+ in
Apk.fromUri()
. This greatly improves performance for large APKs. - Add
ZippedFileProvider.getUriForZipEntry()
overloads forFile
andUri
. - Raise
targetSdk
for sample apps to 35. - Proper support for edge-to-edge display in sample apps.
Public API changes
- Added
getUriForZipEntry(File, String)
andgetUriForZipEntry(Uri, String)
toZippedFileProvider.Companion
and as staticZippedFileProvider
methods.
0.9.2
Bug fixes and improvements
- Fix
SESSION_BASED
installer session completing with "Install permission denied" failure when performing a self-update if install permission was not granted because it was unnecessary.
0.9.1
Bug fixes and improvements
- Proper support of dynamic features for split APKs (#95).
- Add documentation for
Apk
properties.
Public API changes
- Added
Apk.ConfigSplit
sealed interface inackpine-splits
module. - Added
configForSplit
property toApk.Libs
,Apk.ScreenDensity
andApk.Localization
inackpine-splits
module.
0.9.0
Dependencies
- Updated Dokka to 2.0.0-Beta.
- Updated Gradle wrapper to 8.11.1.
Bug fixes and improvements
-
Introduce
InstallPreapproval
API. See documentation on usage. -
Introduce
InstallConstraints
API. See documentation on usage. -
Add
requestUpdateOwnership
option for install sessions. PermissionENFORCE_UPDATE_OWNERSHIP
was added toAndroidManifest.xml
. -
Add
packageSource
option for install sessions. -
Add
dontKillApp
option for install sessions withInheritExisting
install mode. -
Source-incompatible: deprecate
SessionResult
and returnSession.State.Completed
fromSession.await()
.SessionResult
was an early design leftover which was mistakenly overlooked. Now it's finally been dealt with.To migrate, change
SessionResult.Success
toSession.State.Succeeded
, andSessionResult.Error
toSession.State.Failed
.cause
property ofSessionResult.Error
is replaced withfailure
property ofSession.State.Failed
.// Old when (val result = session.await()) { is SessionResult.Success -> println("Success") is SessionResult.Error -> println(result.cause.message) } // New when (val result = session.await()) { Session.State.Succeeded -> println("Success") is Session.State.Failed -> println(result.failure.message) }
-
Source-incompatible:
when
matches onInstallFailure
andUninstallFailure
type are no longer exhaustive.This change was made to guard against possible additions of failure types in future Android versions, like
Timeout
in Android 14. -
Fix session not launching after process restart if it was in the midst of preparations.
-
Show notification for
SESSION_BASED
install sessions whenDEFERRED
confirmation is set only if user action is actually required. -
Fix possible races when
ListenableFutures
returned fromgetSessionsAsync()
andgetActiveSessionsAsync()
might not get completed. -
Lower API level required for
READ_EXTERNAL_STORAGE
permission in sample apps. -
Add
sample-api34
sample project. -
Add "Building" section to documentation.
Public API changes
- Source-incompatible:
Session.await()
now returnsSession.State.Completed
. Overload returningSessionResult
is left for binary compatibility, but will be removed in the next minor version. - Source-incompatible:
when
matches onInstallFailure
andUninstallFailure
type are no longer exhaustive. - Deprecated:
SessionResult
is deprecated and will be removed in the next minor version. - Added
InstallPreapproval
class and related APIs toInstallParameters
,InstallParameters.Builder
andInstallParametersDsl
. - Added
InstallConstraints
class and related APIs toInstallParameters
,InstallParameters.Builder
andInstallParametersDsl
. - Added
dontKillApp
boolean property toInstallMode.InheritExisting
. - Added
requestUpdateOwnership
property toInstallParameters
,InstallParameters.Builder
andInstallParametersDsl
. - Added
PackageSource
class and related APIs toInstallParameters
,InstallParameters.Builder
andInstallParametersDsl
.
0.8.3
Bug fixes and improvements
- Return
Aborted
failure whenINTENT_BASED
install session is cancelled. - Return
Aborted
failure when uninstall viaACTION_UNINSTALL_PACKAGE
is cancelled. - Request permissions if they're not granted when sample apps are launched via
ACTION_VIEW
intent.
0.8.2
Bug fixes and improvements
- Fix introduced in 0.8.1 repeated install confirmation after granting install permission if confirmation was dismissed by clicking outside of confirmation dialog on some OS versions.
- Don't use
requireUserAction
option in samples as it's unstable with different vendors and OS versions.