插件安装流程 从ZIP到生效的完整路径
插件 ZIP 格式
AxManager 的插件安装程序是打包成 ZIP 文件的模块。最简单的安装程序只需要把模块文件直接打包成 ZIP:
plugin.zip
├── customize.sh ← 可选,自定义安装过程
├── module.prop ← 必填
├── system/ ← 模块文件
└── ... ← 其他模块文件
注意:KernelSU 模块不能通过自定义 Recovery 安装,这是系统级限制,不是 AxManager 的问题。
安装步骤
- 获取插件 ZIP 文件(通常来自玩机论坛、GitHub releases 等)
- 打开 AxManager 应用,进入插件管理页面
- 点击安装按钮,选择下载好的 ZIP 文件
- AxManager 会自动解压、应用权限、运行安装脚本
- 安装完成后,插件出现在列表中
- 点击启用,然后 Re-ignite 或等待下次重启生效

customize.sh 自定义安装
如果插件需要自定义安装行为(比如根据不同 ABI 安装不同的二进制文件),可以在 ZIP 根目录放一个 customize.sh。
customize.sh 会在所有文件解压、默认权限应用后被 source(不是执行)。它运行在 AxManager 内置 BusyBox 的 ash shell 中。
可用变量:
| 变量 | 说明 |
|---|---|
| AXERON | 始终为 true |
| AXERONVER | AxManager 服务器版本整数 |
| MODPATH | 模块应该安装到的路径 |
| TMPDIR | 临时目录 |
| ZIPFILE | 安装 ZIP 文件路径 |
| ARCH | CPU 架构 |
| IS64BIT | 是否 64 位 |
| API | 设备 API 级别 |
| BOOTMODE | 始终为 true |
自定义安装函数
customize.sh 中可以调用以下辅助函数:
| 函数 | 说明 |
|---|---|
ui_print <msg> | 在控制台打印消息。不要用 echo,它不会在自定义恢复控制台上显示 |
abort <msg> | 打印错误并终止安装。不要用 exit,它会跳过清理步骤 |
set_perm <target> <owner> <group> <permission> [context] | 设置文件权限和 SELinux 上下文 |
set_perm_recursive <dir> <owner> <group> <dirperm> <fileperm> [context] | 递归设置目录权限 |
set_perm 默认 SELinux 上下文为 u:object_r:system_file:s0。
完全自定义安装
如果需要跳过所有默认安装步骤,完全自己控制流程,可以在 customize.sh 中声明:
SKIPUNZIP=1
声明后,AxManager 不会自动解压 ZIP 和设置权限,所有工作由 customize.sh 自己负责。适合需要根据复杂条件安装不同文件的场景。
安装失败排查
常见的安装失败原因:
versionCode 不兼容:插件的 axeronPlugin 字段声明的版本高于当前 AxManager 版本。检查 AxManager 版本号,或等待插件更新。
module.prop 格式错误:
- 缺少必填字段(id、name、versionCode 等)
id不符合正则(不能以数字开头,不能包含空格)- 换行符是 Windows 格式(CR+LF),必须用 UNIX(LF)
versionCode不是整数
ZIP 损坏:重新下载插件,确认文件完整。
生效时机
安装完成后,插件不会立即生效。有两种方式让它生效:
- Re-ignite:如果支持,通过热重启让插件加载(不需要完整重启系统)
- 完整重启:手机重启后,AxManager 重新激活,插件自动加载
Re-ignite 的工作原理见 Re-ignite 热重启。