Skip to content

fix: Replace Ackpine with native SessionInstaller#508

Merged
MarcaDian merged 3 commits into
devfrom
add-fallback-install
May 3, 2026
Merged

fix: Replace Ackpine with native SessionInstaller#508
MarcaDian merged 3 commits into
devfrom
add-fallback-install

Conversation

@MarcaDian

@MarcaDian MarcaDian commented May 1, 2026

Copy link
Copy Markdown
Contributor

Replaces the Ackpine library with a custom SessionInstaller implementation built directly on the Android PackageInstaller session API.

Changes:

  • SessionInstaller: native session-based install with user confirmation, Shizuku silent install, intent-based fallback for devices that kill sessions, and suspend-based uninstall monitored via ACTION_PACKAGE_REMOVED broadcast
  • ShizukuInstaller: removed dead code.
  • InstalledAppInfoViewModel: adapted uninstall flow to use SessionInstaller
  • Constants: centralized APK_MIMETYPE, AOSP installer package/label constants
  • AndroidManifest: added missing ManagerRootService declaration

@MarcaDian MarcaDian force-pushed the add-fallback-install branch from b5c1ad5 to f45753c Compare May 1, 2026 21:48
@LandonMoran

This comment has been minimized.

@MarcaDian

This comment has been minimized.

@MarcaDian MarcaDian force-pushed the add-fallback-install branch 2 times, most recently from 29ec266 to 17c3443 Compare May 3, 2026 07:43
@MarcaDian MarcaDian changed the title feat: Fallback to system installer on transient Ackpine failure fix: Retry failed installations with INTENT_BASED on OEM session death May 3, 2026
@MarcaDian MarcaDian force-pushed the add-fallback-install branch 2 times, most recently from 81ec15c to 0007398 Compare May 3, 2026 09:47
@MarcaDian MarcaDian changed the title fix: Retry failed installations with INTENT_BASED on OEM session death fix: Replace Ackpine with native SessionInstaller May 3, 2026
@MarcaDian MarcaDian force-pushed the add-fallback-install branch from 9b9aa22 to 180e10b Compare May 3, 2026 10:06
@MarcaDian MarcaDian linked an issue May 3, 2026 that may be closed by this pull request
4 tasks
@MarcaDian MarcaDian merged commit cf0f4db into dev May 3, 2026
1 check passed
@MarcaDian MarcaDian deleted the add-fallback-install branch May 3, 2026 11:00
github-actions Bot pushed a commit that referenced this pull request May 3, 2026
# [1.16.0-dev.18](v1.16.0-dev.17...v1.16.0-dev.18) (2026-05-03)

### Bug Fixes

* Replace `Ackpine` with native `SessionInstaller` ([#508](#508)) ([cf0f4db](cf0f4db))

### Features

* Prompt bundle selection before APK selection in simple mode ([#511](#511)) ([8161d9b](8161d9b))
github-actions Bot pushed a commit that referenced this pull request May 4, 2026
# [1.16.0](v1.15.0...v1.16.0) (2026-05-04)

### Bug Fixes

* "SessionBasedInstallConfirmationActivity was finished by user" install error on some devices ([3e74857](3e74857))
* `Session is dead` error on Pixels devices when installing apps ([#458](#458)) ([ce1ce6e](ce1ce6e))
* Adapt accent color contrast for extreme black/white values in app info dialog ([c4f883f](c4f883f))
* Add logging and fix stale installer cache ([78b5aee](78b5aee))
* Always respect manager prerelease preference for update channel ([090ee0c](090ee0c))
* Apply locale via context wrap on Android < 13 ([ce193ee](ce193ee))
* Check primary ABI only in `isArmV7` to avoid false positives on `ArmV8` devices ([14729c2](14729c2))
* Eliminate background flash on `InstalledAppInfo` → patch flow transition ([b246a4b](b246a4b))
* Fall back to `Downloads` export on devices without `DocumentsUI` (Android TV) ([1e21c39](1e21c39))
* File picker and export for Android TV ([#491](#491)) ([7c1cfba](7c1cfba))
* Handle `InstallFailure` result when installing manager update ([a4d1eb8](a4d1eb8))
* Hoist install state reads to prevent recomposition on install ([9b82048](9b82048))
* Merge 'Filter split APKs' and `Remove unused native libraries` into 'Optimize for device architecture' setting ([2edb15f](2edb15f))
* Patch bundles do not load on Android 8.0 devices ([3116619](3116619))
* Prevent `InstalledAppInfoViewModel` collision on dialog reopen ([15ae79a](15ae79a))
* Replace `Ackpine` with native `SessionInstaller` ([#508](#508)) ([cf0f4db](cf0f4db))
* Replace `isLoaded` flag with `BundleState` sealed class and simplify `homeAppState` ([72976d3](72976d3))
* Resolve app icon from saved APK when app is not installed ([fe3ef6c](fe3ef6c))
* Resolve display name from bundle metadata over patched APK label ([6c6e065](6c6e065))
* Scope `InstalledAppInfoViewModel` to dialog instance via dialog token ([0cf2f6a](0cf2f6a))
* Shizuku installer couldn't update an already installed app ([#454](#454)) ([d4e74e3](d4e74e3))
* Show reinstall button and installer dialog for deleted apps ([472d046](472d046))
* Show SDK-incompatible versions as disabled, block patching when no versions are compatible with device SDK ([f90d5ba](f90d5ba))
* Show swipe gesture hint on every custom bundle addition ([0c66503](0c66503))
* System installer couldn't update an already installed app ([#455](#455)) ([adc93e4](adc93e4))
* Update home screen cards immediately after install/uninstall ([8f671bd](8f671bd))
* Use `SharedPreferences` as locale side-channel on Android < 13 ([a5f91bd](a5f91bd))
* When greeting message is disabled, show a small top spacer so the app cards don't sit flush against the top of the screen ([6900cc2](6900cc2))

### Features

* Adaptive two-column layout for `InstalledAppInfoDialog` on tablets ([40a29a9](40a29a9))
* Add `BundleAppMetadata` as a data source for `AppDataResolver` ([3bdc1f5](3bdc1f5))
* Add fast bytecode mode setting to expert mode ([#403](#403)) ([e73c63c](e73c63c))
* Add manual `JKS` parser for keystore import without BC provider dependency ([#494](#494)) ([ccc99a2](ccc99a2))
* Add random background mode with rotation interval ([2d12fbb](2d12fbb))
* Add swipe gestures and multi-select to app buttons on main screen ([#446](#446)) ([0330699](0330699))
* Add swipe gestures to hidden apps dialog and search results ([8cf1f13](8cf1f13))
* Add toggle to disable home screen patching phrases ([#443](#443)) ([f53ad64](f53ad64))
* Import keystore from `PKCS12`, `BKS` and `JKS` formats ([3f38387](3f38387))
* Improve patch visibility in bundle and app patch dialogs ([#457](#457)) ([1881991](1881991))
* Live patching progress in foreground notification ([c25af8f](c25af8f))
* Migrate to `Ackpine` for package installation/uninstallation ([#444](#444)) ([aa7207d](aa7207d))
* Open `.mpp` patch sources directly from file manager ([#483](#483)) ([f46a11f](f46a11f))
* Open patches dialog on hidden app tap in search ([1898e74](1898e74))
* Prompt bundle selection before APK selection in simple mode ([#511](#511)) ([8161d9b](8161d9b))
* Sort universal patches to bottom of each bundle in patches dialog ([eac672e](eac672e))
* Store merged APK from split archives as original for repatching ([#438](#438)) ([be0b868](be0b868))
LisoUseInAIKyrios pushed a commit that referenced this pull request May 17, 2026
# [1.16.0-dev.18](v1.16.0-dev.17...v1.16.0-dev.18) (2026-05-03)

### Bug Fixes

* Replace `Ackpine` with native `SessionInstaller` ([#508](#508)) ([2162f92](2162f92))

### Features

* Prompt bundle selection before APK selection in simple mode ([#511](#511)) ([bbc9206](bbc9206))
LisoUseInAIKyrios pushed a commit that referenced this pull request May 17, 2026
# [1.16.0](v1.15.0...v1.16.0) (2026-05-04)

### Bug Fixes

* "SessionBasedInstallConfirmationActivity was finished by user" install error on some devices ([4fdef34](4fdef34))
* `Session is dead` error on Pixels devices when installing apps ([#458](#458)) ([3b556cf](3b556cf))
* Adapt accent color contrast for extreme black/white values in app info dialog ([b34fd77](b34fd77))
* Add logging and fix stale installer cache ([fd1f97e](fd1f97e))
* Always respect manager prerelease preference for update channel ([6c90248](6c90248))
* Apply locale via context wrap on Android < 13 ([dc6536f](dc6536f))
* Check primary ABI only in `isArmV7` to avoid false positives on `ArmV8` devices ([71c6c6d](71c6c6d))
* Eliminate background flash on `InstalledAppInfo` → patch flow transition ([bf2865a](bf2865a))
* Fall back to `Downloads` export on devices without `DocumentsUI` (Android TV) ([afeff7e](afeff7e))
* File picker and export for Android TV ([#491](#491)) ([7cd5e1d](7cd5e1d))
* Handle `InstallFailure` result when installing manager update ([7df2907](7df2907))
* Hoist install state reads to prevent recomposition on install ([f184d4a](f184d4a))
* Merge 'Filter split APKs' and `Remove unused native libraries` into 'Optimize for device architecture' setting ([96d0c4c](96d0c4c))
* Patch bundles do not load on Android 8.0 devices ([48bb842](48bb842))
* Prevent `InstalledAppInfoViewModel` collision on dialog reopen ([0648062](0648062))
* Replace `Ackpine` with native `SessionInstaller` ([#508](#508)) ([2162f92](2162f92))
* Replace `isLoaded` flag with `BundleState` sealed class and simplify `homeAppState` ([d51d9df](d51d9df))
* Resolve app icon from saved APK when app is not installed ([ff15269](ff15269))
* Resolve display name from bundle metadata over patched APK label ([65500b6](65500b6))
* Scope `InstalledAppInfoViewModel` to dialog instance via dialog token ([88d7352](88d7352))
* Shizuku installer couldn't update an already installed app ([#454](#454)) ([8313342](8313342))
* Show reinstall button and installer dialog for deleted apps ([faa53ba](faa53ba))
* Show SDK-incompatible versions as disabled, block patching when no versions are compatible with device SDK ([f2176a1](f2176a1))
* Show swipe gesture hint on every custom bundle addition ([9c68eee](9c68eee))
* System installer couldn't update an already installed app ([#455](#455)) ([2d7f9d5](2d7f9d5))
* Update home screen cards immediately after install/uninstall ([6e58e51](6e58e51))
* Use `SharedPreferences` as locale side-channel on Android < 13 ([88dc77f](88dc77f))
* When greeting message is disabled, show a small top spacer so the app cards don't sit flush against the top of the screen ([14a5144](14a5144))

### Features

* Adaptive two-column layout for `InstalledAppInfoDialog` on tablets ([dd068c4](dd068c4))
* Add `BundleAppMetadata` as a data source for `AppDataResolver` ([d174ed4](d174ed4))
* Add fast bytecode mode setting to expert mode ([#403](#403)) ([70daa22](70daa22))
* Add manual `JKS` parser for keystore import without BC provider dependency ([#494](#494)) ([4493265](4493265))
* Add random background mode with rotation interval ([c0e3310](c0e3310))
* Add swipe gestures and multi-select to app buttons on main screen ([#446](#446)) ([1093c43](1093c43))
* Add swipe gestures to hidden apps dialog and search results ([a424a62](a424a62))
* Add toggle to disable home screen patching phrases ([#443](#443)) ([91a66e3](91a66e3))
* Import keystore from `PKCS12`, `BKS` and `JKS` formats ([eb5c9ab](eb5c9ab))
* Improve patch visibility in bundle and app patch dialogs ([#457](#457)) ([df53801](df53801))
* Live patching progress in foreground notification ([202dd76](202dd76))
* Migrate to `Ackpine` for package installation/uninstallation ([#444](#444)) ([574e404](574e404))
* Open `.mpp` patch sources directly from file manager ([#483](#483)) ([288868d](288868d))
* Open patches dialog on hidden app tap in search ([396e5cd](396e5cd))
* Prompt bundle selection before APK selection in simple mode ([#511](#511)) ([bbc9206](bbc9206))
* Sort universal patches to bottom of each bundle in patches dialog ([14e284e](14e284e))
* Store merged APK from split archives as original for repatching ([#438](#438)) ([71cc022](71cc022))
SA-SUJON pushed a commit to SA-SUJON/MorpheManager that referenced this pull request May 24, 2026
SA-SUJON pushed a commit to SA-SUJON/MorpheManager that referenced this pull request May 24, 2026
# [1.16.0-dev.18](MorpheApp/morphe-manager@v1.16.0-dev.17...v1.16.0-dev.18) (2026-05-03)

### Bug Fixes

* Replace `Ackpine` with native `SessionInstaller` ([MorpheApp#508](MorpheApp#508)) ([633e4b3](MorpheApp@633e4b3))

### Features

* Prompt bundle selection before APK selection in simple mode ([MorpheApp#511](MorpheApp#511)) ([650befe](MorpheApp@650befe))
SA-SUJON pushed a commit to SA-SUJON/MorpheManager that referenced this pull request May 24, 2026
# [1.16.0](MorpheApp/morphe-manager@v1.15.0...v1.16.0) (2026-05-04)

### Bug Fixes

* "SessionBasedInstallConfirmationActivity was finished by user" install error on some devices ([036efb0](MorpheApp@036efb0))
* `Session is dead` error on Pixels devices when installing apps ([MorpheApp#458](MorpheApp#458)) ([d1476a6](MorpheApp@d1476a6))
* Adapt accent color contrast for extreme black/white values in app info dialog ([c81b5f5](MorpheApp@c81b5f5))
* Add logging and fix stale installer cache ([fabe26d](MorpheApp@fabe26d))
* Always respect manager prerelease preference for update channel ([6fe4cb5](MorpheApp@6fe4cb5))
* Apply locale via context wrap on Android < 13 ([ece000c](MorpheApp@ece000c))
* Check primary ABI only in `isArmV7` to avoid false positives on `ArmV8` devices ([3fa61c1](MorpheApp@3fa61c1))
* Eliminate background flash on `InstalledAppInfo` → patch flow transition ([e59c7d5](MorpheApp@e59c7d5))
* Fall back to `Downloads` export on devices without `DocumentsUI` (Android TV) ([27b9b9c](MorpheApp@27b9b9c))
* File picker and export for Android TV ([MorpheApp#491](MorpheApp#491)) ([a25d84f](MorpheApp@a25d84f))
* Handle `InstallFailure` result when installing manager update ([8ac0c38](MorpheApp@8ac0c38))
* Hoist install state reads to prevent recomposition on install ([0c23b23](MorpheApp@0c23b23))
* Merge 'Filter split APKs' and `Remove unused native libraries` into 'Optimize for device architecture' setting ([006e1cc](MorpheApp@006e1cc))
* Patch bundles do not load on Android 8.0 devices ([793f591](MorpheApp@793f591))
* Prevent `InstalledAppInfoViewModel` collision on dialog reopen ([3ee12bc](MorpheApp@3ee12bc))
* Replace `Ackpine` with native `SessionInstaller` ([MorpheApp#508](MorpheApp#508)) ([633e4b3](MorpheApp@633e4b3))
* Replace `isLoaded` flag with `BundleState` sealed class and simplify `homeAppState` ([cf42e4f](MorpheApp@cf42e4f))
* Resolve app icon from saved APK when app is not installed ([d9c836a](MorpheApp@d9c836a))
* Resolve display name from bundle metadata over patched APK label ([1132abe](MorpheApp@1132abe))
* Scope `InstalledAppInfoViewModel` to dialog instance via dialog token ([3961404](MorpheApp@3961404))
* Shizuku installer couldn't update an already installed app ([MorpheApp#454](MorpheApp#454)) ([aaf237e](MorpheApp@aaf237e))
* Show reinstall button and installer dialog for deleted apps ([ec8599d](MorpheApp@ec8599d))
* Show SDK-incompatible versions as disabled, block patching when no versions are compatible with device SDK ([39f3bc7](MorpheApp@39f3bc7))
* Show swipe gesture hint on every custom bundle addition ([e66d598](MorpheApp@e66d598))
* System installer couldn't update an already installed app ([MorpheApp#455](MorpheApp#455)) ([e83af35](MorpheApp@e83af35))
* Update home screen cards immediately after install/uninstall ([4f3ab2b](MorpheApp@4f3ab2b))
* Use `SharedPreferences` as locale side-channel on Android < 13 ([4c32ac5](MorpheApp@4c32ac5))
* When greeting message is disabled, show a small top spacer so the app cards don't sit flush against the top of the screen ([ed22214](MorpheApp@ed22214))

### Features

* Adaptive two-column layout for `InstalledAppInfoDialog` on tablets ([bc4c3ae](MorpheApp@bc4c3ae))
* Add `BundleAppMetadata` as a data source for `AppDataResolver` ([f2097c6](MorpheApp@f2097c6))
* Add fast bytecode mode setting to expert mode ([MorpheApp#403](MorpheApp#403)) ([4bcd828](MorpheApp@4bcd828))
* Add manual `JKS` parser for keystore import without BC provider dependency ([MorpheApp#494](MorpheApp#494)) ([fd8902b](MorpheApp@fd8902b))
* Add random background mode with rotation interval ([6bacce3](MorpheApp@6bacce3))
* Add swipe gestures and multi-select to app buttons on main screen ([MorpheApp#446](MorpheApp#446)) ([822c23f](MorpheApp@822c23f))
* Add swipe gestures to hidden apps dialog and search results ([882a7d5](MorpheApp@882a7d5))
* Add toggle to disable home screen patching phrases ([MorpheApp#443](MorpheApp#443)) ([108e60b](MorpheApp@108e60b))
* Import keystore from `PKCS12`, `BKS` and `JKS` formats ([da3ec82](MorpheApp@da3ec82))
* Improve patch visibility in bundle and app patch dialogs ([MorpheApp#457](MorpheApp#457)) ([739cb32](MorpheApp@739cb32))
* Live patching progress in foreground notification ([fb9b6e7](MorpheApp@fb9b6e7))
* Migrate to `Ackpine` for package installation/uninstallation ([MorpheApp#444](MorpheApp#444)) ([316fecf](MorpheApp@316fecf))
* Open `.mpp` patch sources directly from file manager ([MorpheApp#483](MorpheApp#483)) ([8df6ed9](MorpheApp@8df6ed9))
* Open patches dialog on hidden app tap in search ([e538457](MorpheApp@e538457))
* Prompt bundle selection before APK selection in simple mode ([MorpheApp#511](MorpheApp#511)) ([650befe](MorpheApp@650befe))
* Sort universal patches to bottom of each bundle in patches dialog ([53f43d9](MorpheApp@53f43d9))
* Store merged APK from split archives as original for repatching ([MorpheApp#438](MorpheApp#438)) ([2bacd4c](MorpheApp@2bacd4c))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: Unable to update manager and patched apps directly via manager

2 participants