AxManager 中文文档 下载 App

与 Magisk KernelSU 脚本兼容性 一份脚本跑三套环境

兼容性基础

好消息是——由于 AxManager 的 BusyBox 直接编译自 Magisk 项目,三者在 shell 语法和命令层面完全兼容。这意味着:

需要处理的主要是环境差异,而不是语法差异。


各环境的差异点

对比项AxManagerMagiskKernelSU
环境标识变量$AXERON = true$MAGISK = true$KSU = true
模块运行时用户空间init 阶段init 阶段
需要 Root否是是
PATH 注入AxManager 自己处理Magisk 处理KernelSU 处理
module.prop 字段axeronPlugin无额外字段无额外字段
热重启Re-ignite完整重启完整重启

写一份通用脚本

下面是一个跨环境兼容的插件脚本模板:

#!/system/bin/sh
MODDIR=${0%/*}

# 判断运行环境
ENV="unknown"
if [ "$AXERON" = "true" ]; then
    ENV="axeron"
elif [ "$MAGISK" = "true" ]; then
    ENV="magisk"
elif [ "$KSU" = "true" ]; then
    ENV="kernelsu"
fi

# 根据环境执行不同逻辑
case "$ENV" in
    axeron)
        # AxManager 特有逻辑
        ;;
    magisk|kernelsu)
        # Root 模式逻辑
        ;;
esac

# 通用逻辑放这里
# ...

module.prop 兼容性

如果插件要同时支持三种环境,module.prop 中的 axeronPlugin 字段只在 AxManager 中生效。Magisk 和 KernelSU 会忽略它。

建议的做法是:


需要注意的坑

Root 专属操作

如果你的模块脚本里有 Root 专属操作(如修改 /system 分区),在 AxManager 中运行时这些操作会静默失败或报错。脚本需要先检测环境,然后决定要不要执行这些操作。

启动时机差异

AxManager 的 post-fs-data.sh 在 BOOT_COMPLETED 广播时执行,而 Magisk 的 post-fs-data.sh 在文件系统挂载后立即执行。如果脚本依赖系统服务已启动,AxManager 中的执行时机可能更晚,这通常反而是好事。

SELinux 上下文

AxManager 的 SELinux 处理和 Magisk 完全一致(因为 BusyBox 源码相同)。设置文件权限和 SELinux 上下文的函数用法相同。


总结

一份写得好的模块脚本,只要:

  1. 用环境标识变量区分三种环境
  2. Root 专属操作做条件判断
  3. module.prop 加上 axeronPlugin 字段
  4. 用标准 BusyBox ash 语法

就可以同时在 AxManager、Magisk、KernelSU 三套环境中运行。