You've already forked Magisk
mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-09-06 06:36:58 +00:00
Update documentations
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# Developer Guides
|
||||
|
||||
Please read through [Magisk Details](details.md) before reading the following guides. If you are developing a module, pay extra attention to the [Magic Mount](details.md#magic-mount) section.
|
||||
|
||||
## Magisk Modules
|
||||
A Magisk module is a folder placed in `/data/adb/modules` with a structure below:
|
||||
|
||||
@@ -36,7 +38,11 @@ A Magisk module is a folder placed in `/data/adb/modules` with a structure below
|
||||
│ │ ├── .
|
||||
│ │ ├── .
|
||||
│ │ └── .
|
||||
│ ├── vendor <--- Auto generated. A symlink to $MODID/system/vendor
|
||||
│ │
|
||||
│ │ *** Auto Generated by Magisk ***
|
||||
│ │
|
||||
│ ├── vendor <--- A symlink to $MODID/system/vendor
|
||||
│ ├── product <--- A symlink to $MODID/system/product
|
||||
│ │
|
||||
│ │ *** Others ***
|
||||
│ │
|
||||
@@ -84,12 +90,6 @@ You can submit a module to **Magisk-Module-Repo** so users can download your mod
|
||||
- When your module is downloaded with Magisk Manager, `META-INF/com/google/android/update-binary` will be **forcefully** replaced with the latest [`module_installer.sh`](https://github.com/topjohnwu/Magisk/blob/master/scripts/module_installer.sh) to make sure all installation uses the latest scripts.
|
||||
- Since `update-binary` will be replaced, this means that all modules in the repo are expected to follow how the installation framework works: the installation framework will load your `install.sh` script and run the corresponding callbacks.
|
||||
- This also means that you should NOT add custom logic in `update-binary` as they will simply be ignored.
|
||||
- **Existing module devs please read!!** For devs migrating from the old template based modules to the new installer format, one thing you might overlook is the change in configuration flags: it no longer uses `AUTO_MOUNT`, but instead uses `SKIP_MOUNT`. In a nutshell, `AUTO_MOUNT=true` behaves exactly the same as `SKIP_MOUNT=false`, and 99% of the time you should NOT touch this flag.
|
||||
|
||||
## Notes on Partitions
|
||||
On modern Android, `/system/vendor` is moved out from the system partition into its own separate `vendor` partition. For module developers, Magisk will handle these different configurations transparently so you do not need to worry anything about it. If you want to modify files in `vendor`, place the modified files under `/system/vendor` and you're good to go!
|
||||
|
||||
Starting in Android Q and some devices on older Android versions, a separate partition `platform` is available. Support for `platform` will come soon in upcoming Magisk versions, please stay tuned!
|
||||
|
||||
## Boot Scripts
|
||||
In Magisk, you can run boot scripts in 2 different modes: **post-fs-data** and **late_start service** mode.
|
||||
@@ -120,6 +120,17 @@ In Magisk, there are also 2 kinds of scripts: **general scripts** and **module s
|
||||
|
||||
Magisk's internal busybox's path `$BBPATH` is always prepended in `PATH`. This means all commands you call in scripts are always using busybox unless the applet is not included. This makes sure that your script always run in a predictable environment and always have the full suite of commands regardless of which Android version it is running on.
|
||||
|
||||
## Root Directory Overlay System
|
||||
Since `/` is read-only in system-as-root devices, Magisk provides an overlay system, allowing developers to patch files / add new rc scripts. Additional files shall be placed in the `overlay.d` folder in the ramdisk, and they will have the following restrictions:
|
||||
|
||||
- All `*.rc` files in `overlay.d` will be read and concatenated *AFTER* `init.rc`
|
||||
- Replacing existing files are allowed.<br>
|
||||
e.g. you can replace `/res/random.png` by adding the file `overlay.d/res/random.png`
|
||||
- Non-existing files will be ignored (with exceptions detailed in the next point).<br>
|
||||
e.g. `overlay.d/new_file` will be ignored if `/new_file` does not exist
|
||||
- Additional files in `overlay.d/sbin` is allowed as they will be copied into Magisk's sbin overlay.<br>
|
||||
e.g. `overlay.d/sbin/libfoo.ko` will be copied to `/sbin/libfoo.ko`.
|
||||
|
||||
## Remove Files
|
||||
How to remove a file systemless-ly? To actually make the file *disappear* is complicated (possible, not worth the effort). Replacing it with a dummy file should be good enough! Create an empty file with the same name and place it in the same path within a module, it shall replace your target file with a dummy file.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user