跳转到主要内容
ShiroSU 的模块构建工具分为如下内容:

依赖

构建工具会使用 NGA SDK 在构建时自动集成 Shell Utils,自动混淆加密 action.shcustomize.shnga-utils.sh
本地构建需要至少有 ksh 或者语法特性更多的 Shell 解释器!否则 Shell 加密无法运行,不可使用 POSIX Shell!

使用方法

1

新建文件夹

前往示例仓库通过模板生成新项目
2

修改代码

修改模块项目代码
3

构建模块

通过 GitHub Action 手动或自行修改 Workflow 来实现构建模块

项目结构

模块项目应该遵循以下目录结构
Git 仓库目录
src (模块目录)
module.prop (模块信息配置)

customize.sh (可选,配置安装)
action.sh (可选,操作按钮)
post-fs-data.sh (可选,在 post-fs-data 执行)
post-mount.sh (可选,在 post-mount 执行)
service.sh (可选,在 late_start 执行)
boot-completed.sh (可选,在系统启动完毕后执行)
uninstall.sh (可选,配置卸载)
system.prop (可选,配置需要修改的属性)
sepolicy.rule (可选,配置需要修改的 SELinux 策略)


cfgui (可选,模块 ConfigUI 前端)

nga-utils.sh (构建产生,常用 Shell 函数)
hashList.dat (构建产生,安装时校验的模块文件哈希值)
META-INF (构建产生,Recovery 刷入脚本)

其他模块资源...

c++_native (C++ 项目目录)
<项目名称>
Android.mk (构建配置文件)
Application.mk (构建配置文件)
其他源码文件...
其他 C++ 项目目录...

go_native (Go 项目目录)
<项目名称>
go.mod (项目信息文件)
go.sum (有依赖时生成的校验文件)
其他源码文件...
其他 Go 项目目录...

README.md (仓库说明文件)
changelog.md (模块更新日志)
update.json (模块更新配置)

.nometa (可选,构建时不自动添加工具自带 META-INF 目录)

其他仓库资源...
不建议往 META-INF 添加任何 Recovery 刷入脚本之外的文件
模块示例仓库已经配置好这些内容,可直接使用模板并按需修改以使用
不需要的文件请自行删除!请避免对用户设备造成不必要的负担!

注意事项

  • 模块目录
    • action.sh 的支持范围是: ShiroSU 默认支持/Magisk 27008+/KernelSU 1.0.2+/APatch 11039+
      低版本不支持该按钮,开发者应避免不支持而是建议使用者脱离啃老或建议非 GKI 原版 KSU 使用者转向其他分支
    • post-mount.shboot-completed.sh 仅在 ShiroSU/KernelSU/APatch 支持, 但 Magisk 可在 service.sh 内主动执行 boot-completed.sh
    • META-INF 在仅支持 ShiroSU/KernelSU/APatch 时无需包含
    • zygiskbin 会通过 c++_native/go_native 中的目录自动添加,如有需要,也可自行添加
  • C++ 项目
    • 项目名称 必须与 Android.mk 中的 LOCAL_MODULE 相同,即构建后的文件名称
      • Android.mk 如果配置以 BUILD_EXECUTABLE 构建,将自动把编译后文件移动至模块目录的 bin/<项目名称>/<架构>.bin, 如果配置以 BUILD_SHARED_LIBRARY 构建,将自动把编译后文件移动至模块目录的 zygisk/<架构>.so
  • Go 项目
    • 项目名称 必须与 go.mod 中的 module 值的最后名称相同,即构建后的文件名称
      • arch 按行输出要构建的架构,架构以 Go 支持的为准 (例如使用 amd64 而非 x86_64)
  • changelog.mdupdate.json 等文件可按需自定义名称、路径
后续会重构项目架构,使其基于 FVV 配置