Releases: solrudev/Ackpine
0.22.7
0.22.6
Bug fixes and improvements
- Provide additional log statement for stuck session heuristics.
- Fix crash after returning from settings screen on Android < 7 in samples.
0.22.5
Dependencies
- Don't leak
android-stubsto consumers fromackpine-privileged.
0.22.4
Dependencies
- Updated
apksigto 9.1.1.
Bug fixes and improvements
- Don't close cached shell in
libsuplugin if root access is not available to avoid interfering with other shell operations.
0.22.3
Bug fixes and improvements
- Hotfix: add ProGuard rules for internal Room databases in plugins to prevent crashes with
android.r8.strictFullModeForKeepRulesenabled (default in AGP 9).
0.22.2
Dependencies
- Extracted
ackpine-privilegedandackpine-privileged-ktxartifacts which are now depended upon byackpine-shizuku(-ktx)andackpine-libsu(-ktx).
Bug fixes and improvements
- Introduce
libsuplugin for root-based package installation and uninstallation backed by libsu. - Introduce logging API. Configure a custom
AckpineLoggerviaAckpine.setLogger()to receive internal diagnostic logs.AckpineLogger.Logcatimplementation is provided out of the box and can be set up withAckpine.enableLogcatLogger(). - Fix thread pool starvation when a large number of APKs is submitted for writing in a single
SESSION_BASEDinstall session. - Add root and Shizuku support to
sample-java/sample-ktx. - Add option to disable APK splits filtering in
sample-java/sample-ktx.
Public API changes
New
- Added
ackpine-libsuandackpine-libsu-ktxartifacts. See documentation for details. - Added
ackpine-privilegedartifact withPrivilegedPlugin,PrivilegedInstallParameters,PrivilegedUninstallParameters,PrivilegedInstallCapabilities,PrivilegedUninstallCapabilitiesand related types. - Added
ackpine-privileged-ktxartifact withPrivilegedInstallParametersDsl,PrivilegedUninstallParametersDsland related types. ShizukuPlugin,ShizukuPlugin.InstallParameters,ShizukuPlugin.UninstallParameters,ShizukuInstallCapabilities,ShizukuUninstallCapabilities,ShizukuInstallParametersDslandShizukuUninstallParametersDslnow extend theirPrivileged*counterparts fromackpine-privileged(-ktx).- Added
AckpineLoggerinterface,AckpineLogger.Levelenum andAckpineLogger.Logcatimplementation. - Added
Ackpine.setLogger()andAckpine.enableLogcatLogger()static methods.
0.22.1
Bug fixes and improvements
- Hotfix: add ProGuard rule for internal Room database to prevent crashes with
android.r8.strictFullModeForKeepRulesenabled (default in AGP 9).
0.22.0
Dependencies
- Updated
apksigto 9.1.0.
Bug fixes and improvements
-
Introduce capabilities API. This API allows querying what features are available for a given session configuration on the current device, accounting for Android API level and plugin-applied restrictions. See documentation for details.
-
Split plugin API by session type. This allows to forbid using installer plugins for uninstall sessions and vice versa, and to implement both installer and uninstaller plugin within one class with different parameters.
Shizuku plugins were migrated to this new API. Now
ShizukuPluginshould be used both for install and uninstall sessions.ShizukuUninstallPluginis deprecated. -
Fix
equals()forApkListand transitively forInstallParameters. -
InstallParameters.Builder.build()now creates a snapshot before applying plugins, making the builder safely reusable afterbuild().
Public API changes
New
- Added new
capabilitiespackage toackpine-apiwithInstallerCapabilities,UninstallerCapabilities,CapabilityStatusand related types. - Added
PackageInstaller.getCapabilities()andPackageUninstaller.getCapabilities()static methods. - Added
AckpineInstallPluginandAckpineUninstallPlugininterfaces. - Added
InstallPluginScopeandUninstallPluginScopeclasses. Plugins now receive a scope object that isolates modifications made by plugins from direct builder access. - Added
registerPlugin()methods onInstallParameters.BuilderandUninstallParameters.Builderfor typed plugin registration. - Added
plugin()DSL functions onInstallParametersDslandUninstallParametersDslinackpine-ktxfor typed plugin registration. ShizukuPluginnow implementsAckpineInstallPlugin,AckpineUninstallPlugin,InstallCapabilityProvider<ShizukuInstallCapabilities>andUninstallCapabilityProvider<ShizukuUninstallCapabilities>.ShizukuPlugin.Parameterswas renamed toShizukuPlugin.InstallParameters. AddedShizukuPlugin.UninstallParameters.- Added
shizuku()DSL functions inackpine-shizuku-ktxas replacements foruseShizuku(). - Added
ShizukuInstallParametersDsl,ShizukuUninstallParametersDsland related APIs inackpine-shizuku-ktx.
Deprecations
- Deprecated with warning
AckpinePlugin.apply(InstallParameters.Builder)andAckpinePlugin.apply(UninstallParameters.Builder). This will become an error in the next minor version. - Deprecated with warning
AckpinePluginRegistryinterface and itsusePlugin()methods. This will become an error in the next minor version. Use typedregisterPlugin()methods onInstallParameters.BuilderorUninstallParameters.Builderdirectly. - Deprecated with warning
AckpinePluginRegistryDslinterface and itsusePlugin()methods inackpine-ktx. This will become an error in the next minor version. Use typedplugin()methods onInstallParametersDslorUninstallParametersDsldirectly. - Deprecated with warning
ShizukuUninstallPlugin. This will become an error in the next minor version. UseShizukuPluginfor both install and uninstall sessions. - Deprecated with warning
ShizukuPluginParametersDsl,ShizukuPluginParameters(),ShizukuUninstallPluginParametersDslandShizukuUninstallPluginParameters()inshizuku-ktx. This will become an error in the next minor version. UseShizukuInstallParametersDsl/ShizukuInstallParameters()andShizukuUninstallParametersDsl/ShizukuUninstallParameters()respectively. - Deprecated with warning
useShizuku()DSL functions inshizuku-ktx. This will become an error in the next minor version. Useshizuku()instead.
0.21.2
Bug fixes and improvements
- Add parameters validation when creating
InstallContraints. - Remove region and script handling in localization configuration splits resolution. All variants are always packed into a single language split, so it's not necessary at the app level.
- Return -1 instead of ZIP entry size as declared length from
ZippedFileProvider.openAssetFile(). This unblocks usage ofopenFileDescriptor()withZippedFileProviderand also is more consistent with theContentProviderconvention (file descriptor contents are consumed in whole, not a subsection of it). Usequery()withOpenableColumns.SIZEto get the entry size.
0.21.1
Bug fixes and improvements
- Group unknown APK splits (
Apk.Other) by their targeted feature/base inackpine-splits. - Handle
versionCodeMajorattribute when parsingAndroidManifest.xmlinackpine-splits. - Handle malformed ZIP sources gracefully when parsing splits in
ackpine-splits. - Improve DPI matching to better align with Android's screen density selection behavior in
Context.dpi,Apk.isCompatible()andSplitPackageAPIs. - Improve localization splits resolution to also consider region and script in addition to language in
Apk.isCompatible()andSplitPackageAPIs. - Prioritize base-targeted configuration splits over unresolved feature-targeted ones when resolving compatibility in
ackpine-splits. - Fix
SplitPackage.equals()not working correctly for subclasses (e.g. the result offilterCompatible()andsortByCompatibility()). - Fix APK name incorrectly reported in manifest attribute conflict exceptions when parsing splits in
ackpine-splits.
Public API changes
Apk.Othernow implementsApk.ConfigSplitand has a newconfigForSplitproperty.- Added
other: List<SplitPackage.Entry<Apk.Other>>property toSplitPackage.DynamicFeature.