对于大部分内容,ShiroSU 与 Magisk 和 KernelSU 基本保持一致,此处仅介绍不同之处Documentation Index
Fetch the complete documentation index at: https://oom-wg.dev/llms.txt
Use this file to discover all available pages before exploring further.
module.prop
ANSI 转义码
ShiroSU 允许在module.prop 或 Shell 脚本中使用来丰富文本的显示
以 ShiroSU Compat 自带的拓展模块为例,可在 module.prop 使用如下代码:
module.prop
module.prop 后,
模块在 ShiroSU 管理器中显示时 Auto-generated、coreutils, busybox, and bash
以及 /system/bin 均会被加粗
在 module.prop 中,
可使用 nameAnsi、versionAnsi、authorAnsi、descriptionAnsi、actionDescriptionAnsi
来显示包含 ANSI 转义码的文本
虽然不包含 Ansi 后缀同样可以使用,但是为了确保兼容性,请这么做

其他属性
以 ShiroSU 的示例模块为例,可在module.prop 使用如下代码:
module.prop
nameAnsi、versionAnsi、authorAnsi、descriptionAnsi、actionDescriptionAnsi
为 ANSI 转义码 相关内容之外,ShiroSU 还会解析如下内容:
actionDescription(包括actionDescriptionAnsi): 定义此内容,会在执行操作前显示弹窗,此内容用于描述操作有何作用moduleIcon/actionIcon/webuiIcon: 各个类型图标的相对路径,不允许绝对路径或路径穿越
覆写机制
ShiroSU 使用module.override.prop 来覆写 module.prop 中的字段,可覆写的有:
name、version、author、description、actionDescription 以及包含 Ansi 后缀的字段
模块系统
Systemless
ShiroSU NT 采用元模块机制实现挂载,本身提供了一个原生元模块 —— ShiroSU SystemlessSSUS
ShiroSU 的原生元模块
Shell
ShiroSU NT 在此处与其他 root 实现有较大差异,运行的所有 Shell 脚本并不在BusyBox 中以 “独立模式” 运行
为了提升 Shell 脚本开发的便利性,ShiroSU NT 使用运行 Shell 脚本,并且 Shell 解释器中内置了的部分命令,以 Magisk 的 BusyBox 作为替补
也就是说,命令优先从 uutils 获取(部分有兼容性问题的指令没有内置),没有的命令才会从 BusyBox 获取
由于 uutils 命令覆盖面不完整,命令会通过
PATH 环境变量优先回退至 BusyBox,请勿在模块的 Shell 脚本内硬编码修改 PATH!jq),
以及 ripgrep
执行时机
在post-fs-data 与 post-mount 阶段中,所有模块的脚本都是并发堵塞执行的
但是所有通用脚本都是按文件名排序执行的,不会乱序执行或并发执行
执行环境
ShiroSU NT 的模块系统是直接集成了 brush 而不是编译为独立二进制,Shell 脚本执行都是在模块系统内部进行fork 执行的
因此模块系统在执行所有 Shell 脚本时,都会注入环境变量与工具函数,
所有通用脚本或模块都可以在任何由 ShiroSU NT 执行的 Shell 脚本中使用提供的环境
环境变量
为了便于区分,ShiroSU NT 在 Shell 脚本运行时注入以下变量:SSU(bool): 在 ShiroSU NT 环境下运行时,此值将为trueSSU_VER(string): ShiroSU NT 的版本号SSU_VER_CODE(uint64): ShiroSU NT 的纯数字版本号SSU_LATE_LOAD/LATE_LOAD_MODE(bool): 在越狱模式下运行时,此值将为trueSSU_MODULE/MODULE_ID(string): 当前模块 ID (在元模块metauninstall.sh执行时MODULE_ID将为要卸载模块的 ID)
Recovery
ShiroSU NT 不支持通过 Recovery 安装模块, 并且在模块安装时META-INF/com/google/android/update-binary 中的代码不会被执行
SU 调用
ShiroSU NT 的 SU 实现除了su 外还附带了 sudo,支持部分简单传参或基于 su 的传参
但是任何模块内都不应该通过 sudo 或 su -c 执行 Shell 命令!
