Skip to content

AMMF2 模块开发指南

📚 目录

基础知识

在开始开发之前,请确保您已经了解:

使用AMMF2-overlay快速开发

AMMF2-overlay是一个基于AMMF2框架的快速模块开发工具,它简化了开发流程。

1. 克隆overlay仓库

bash
git clone https://github.com/Aurora-Nasa-1/AMMF2-overlay.git
cd AMMF2-overlay

2. 开发流程

  1. 修改配置文件
  2. 常规Magisk模块开发流程
  3. 自定义WebUI(可选)
  4. 提交代码并创建标签
  5. 等待GitHub Action自动构建

最佳实践

错误处理

  • 始终检查错误并提供有意义的错误消息
  • 对关键错误使用 Aurora_abort
  • 使用日志系统记录错误详情

文件路径

  • 使用带有变量的绝对路径,如 $MODPATH
  • $TMP_FOLDER 中创建临时文件
  • 检查文件是否存在后再访问

用户交互

  • 在请求用户输入时提供清晰的指示
  • 根据脚本类型使用适当的函数
  • 记录用户选择到日志中

日志记录

  • 为每个脚本设置唯一的日志文件名
  • 使用适当的日志级别(error, warn, info, debug)
  • 在关键操作后使用 flush_log 确保日志被写入

使用AMMF2框架直接开发

1. 获取框架

bash
# 方法1:使用Git克隆仓库
git clone https://github.com/Aurora-Nasa-1/AMMF2.git
cd AMMF2

# 方法2:直接下载ZIP压缩包
# 访问 https://github.com/Aurora-Nasa-1/AMMF2/archive/refs/heads/main.zip

2. 配置模块信息

编辑 module_settings/config.sh 文件,设置以下基本信息:

bash
action_id="Module_ID"
action_name="Module Name"
action_author="Module Author"
action_description="Module Description"
# Github仓库
Github_update_repo="your_name/your_repo"
updateJson="XXXX/update.json"

3. 开发自定义脚本

files/scripts/ 目录下创建您的自定义脚本:

  • install_custom_script.sh:安装时执行的脚本
  • service_script.sh:后台服务脚本

4. 开发WebUI(可选)

如果需要WebUI界面,可以在 webroot/pages/ 目录下创建新的页面模块。

5. 构建模块 (使用 RMM)

本项目现在使用 RootManageModuleModel (RMM) 来管理和构建模块。

本地构建先决条件:

  1. Android NDK: 确保您已安装 Android NDK,并且 ANDROID_NDK_HOME 环境变量已设置为其位置。
  2. uv (Python 打包工具): 通过运行以下命令安装 uv: curl -LsSf https://astral.sh/uv/install.sh | sh。请确保 $HOME/.cargo/bin 在您的 PATH 中。
  3. RMM (pyrmm CLI): 使用 uv 安装 RMM: uv tool install pyrmm。请确保 $HOME/.local/bin 在您的 PATH 中。

构建命令:

满足先决条件后,您可以通过导航到项目根目录并运行以下命令来构建模块: rmm build

此命令利用 rmmproject.toml 中定义的 custom_rmm_build.sh 脚本来执行所有必要的构建步骤,包括 C++ 编译和打包。

自动化构建:

构建也通过 GitHub Actions 工作流自动处理,这些工作流使用相同的 RMM 设置。

已弃用的构建脚本:

旧的构建脚本 (build.sh, build_for_GITHUBACTION.sh) 现已弃用,不应再用于构建模块。它们的功能已通过 custom_rmm_build.sh 集成到 RMM 构建流程中。建议从您的本地存储库中删除它们。

常见问题

Q: 如何调试模块?

A: 使用AMMF2提供的日志系统,查看 /data/adb/modules/your_module_id/logs/ 目录下的日志文件。

Q: 如何处理不同Android版本的兼容性?

A: 使用AMMF2提供的环境检测函数,根据不同版本编写条件逻辑。

Q: 如何添加新的设置选项?

A: 在 module_settings/settings.json 中添加新的设置项,并在WebUI中实现对应的控制界面。


更多资源

如有问题或建议,欢迎在GitHub提交issue或联系开发团队。

Released under the MIT License.