-
Notifications
You must be signed in to change notification settings - Fork 418
Description
After I've added a systemless tag for apps installed systemless-ly using Magisk, I've thought of adding a Magisk module to allow systemless installation of apps and solve various problems people face when debloating Android. From the beginning, my intention is not to touch the system partition and I want to keep it that way.
Features
- Install. Install an app in the systemless-ly. For system apps with mismatched signature, apps can be installed systemless-ly directly from the installer (see replace below). For other cases, apps have to be installed as user apps first and then the user has to use the corresponding option in the App Info tab to convert the app into a system app.
- Replace. The system app can be replaced with an apk of different signature (e.g. webview) in two ways:
a. Install the app as a system app by replacing the directory at /system/app or wherever the file is located at the system partition and then install the app again after a reboot (this is probably due to the oat file).
b. Replace the directory of the system app so that the app can be installed as a user app - Uninstall/disable/debloat/remove. Replacing the directory of the responsible app (with removing updates first) would completely remove the app. This is helpful for apps that cannot be prevented from running by any means.
Fail-safe mechanism
The module will be very different from a typical module in the sense that the management will be very different. AM will keep a database of tasks handled by the module and can be reverted from AM without uninstalling the module. This is helpful to prevent unwanted situation. For example, when some disabled/replaced system app causes bootloop, the user can boot into safe mode, remove the last changes. At the same time, uninstalling the module from Magisk manager should also remove all the configurations immediately.
Additional features
Often it might be necessary to add certain whitelists or permissions (such as #132) for the system apps. For these cases, it's better to use a separate module but could be useful if implemented on AM as well.