AxManager 中文文档 下载 App

插件结构与 module.prop 如何写一个合法的插件

插件目录结构

AxManager 插件是一个文件夹,放在指定路径下。完整结构如下:

插件文件夹/
├── module.prop          ← 必填,模块元数据
├── system/              ← 可选,模块的文件内容
│   └── bin/             ← 会被加入 PATH
├── post-fs-data.sh      ← 可选,启动时同步执行
├── service.sh           ← 可选,启动时延迟执行
├── uninstall.sh         ← 可选,卸载时执行
├── action.sh            ← 可选,用户点击操作按钮时执行
├── system.prop          ← 可选,系统属性覆盖
├── disable              ← 可选,存在则模块被禁用
├── remove               ← 可选,存在则下次重启时删除
└── ...                  ← 其他任何文件

module.prop 必填配置

module.prop 是每个插件必须有的配置文件,AxManager 通过它识别和加载插件。

配置格式:每行一个 键=值,使用 UNIX(LF)换行。

必填字段:

字段类型说明
idstring唯一标识符,匹配正则 ^[a-zA-Z][a-zA-Z0-9._-]+$
namestring模块显示名称
versionstring版本号字符串,如 v1.0.0
versionCodeint版本号整数,用于比较版本高低
authorstring作者名称
descriptionstring模块描述
axeronPluginint目标 AxManager 服务器版本号

重要:axeronPlugin 的值必须小于或等于当前 AxManager 的服务器版本。如果插件声明需要更高版本,安装会被拒绝。


Shell 脚本钩子

插件支持多个生命周期脚本,与 Magisk 模块类似但执行时机不同:

脚本触发时机用途
post-fs-data.shBOOT_COMPLETED 广播首次同步执行早期初始化
service.shBOOT_COMPLETED 的 late_start service后台服务
uninstall.shAxManager 卸载模块时清理工作
action.sh用户在 AxManager 应用中点击操作按钮用户手动触发

脚本中的环境变量

在插件的 Shell 脚本中,AxManager 会注入以下环境变量:

变量类型说明
AXERONbool始终为 true,用于区分 AxManager/Magisk/KernelSU 环境
AXERONVERintAxManager 服务器版本整数(如 10400)
MODDIRpath模块所在目录
ARCHstring设备 CPU 架构(arm/arm64/x86/x64)
APIint设备 API 级别(Android 版本)
BOOTMODEbool始终为 true

实用技巧:在脚本中用 $AXERON 判断当前运行环境,这样同一份脚本可以在 AxManager、KernelSU、Magisk 中通用。


路径约定

在插件的 Shell 脚本中,使用以下方法获取路径:

MODDIR=${0%/*}     ← 获取模块目录(除 customize.sh 外的所有脚本)

不要硬编码模块路径——AxManager 会负责正确设置 MODDIR,硬编码路径可能导致脚本在不同设备上行为不一致。

自定义安装脚本(customize.sh)中不使用 MODDIR,而是用 MODPATH 变量。


与 Magisk 模块的写法区别

脚本写法基本一致,主要区别在环境变量名和部分钩子的执行时机。但因为 AxManager 的 BusyBox 直接编译自 Magisk 项目,脚本的 shell 语法和命令兼容性完全相同——大部分 Magisk 模块的脚本可以直接搬到 AxManager 中使用。