跳转到内容

管理器特性开发

TIP

本篇内容的所有特性都是在 ShiroSU 管理器实现的,与 ShiroSU root 实现没有关联性, ShiroSU 管理器的特性可在其他 root 实现上使用

ShiroSU 管理器的特性大多都是在 module.prop 与其他特定文件上的拓展

IMPORTANT

请确保模块内的所有文本文件均使用 UNIX (LF) 换行类型,而不是 Windows (CR + LF)Macintosh (CR)

module.prop

ANSI 转义码 [1]

ShiroSU 允许在 module.prop 或 Shell 脚本中使用 ANSI 转义码 来丰富文本的显示,例如可在 module.prop 使用如下代码:

properties
id=ssu_cmd_ext
name=Command Set Extension
version=Auto-generated by SSU
versionAnsi=\e[1mAuto-generated\e[0m by SSU
versionCode=1
author=SSU Developers (O.O.M. W.G.)
description=Add coreutils, busybox, and bash to /system/bin.
descriptionAnsi=Add \e[1mcoreutils, busybox, and bash\e[0m to \e[1m/system/bin\e[0m.

使用如上 module.prop 后, 模块在 ShiroSU 管理器中显示时 Auto-generatedcoreutils, busybox, and bash 以及 /system/bin 均会被加粗

module.prop 中, 可使用 nameAnsiversionAnsiauthorAnsidescriptionAnsiactionAnsi 来显示包含 ANSI 转义码的文本

虽然不包含 Ansi 后缀同样可以使用,但是为了确保兼容性,请这么做

ShiroSU 是通过顺序解析来读取 module.prop 中的内容的,所以请确保包含 Ansi 后缀的值是靠后的

展开查看渲染效果

module.prop 渲染效果

损坏检测&规范检查

ShiroSU 管理器有一个机制用来检测 module.prop 是否损坏或符合规范, 如果损坏或不符合规范,ShiroSU 管理器会在该模块的上方显示一个标签

WARNING

有些模块会使用 sed 命令来修改 module.prop 以实现实时更新内容,但此方法有一定概率会导致 module.prop 文件损坏, 请避免通过 sed 修改或者通过其他方式来显示实时内容,也可以实现一个 module.prop 损坏检测机制,在其损坏时恢复至默认内容

ShiroSU 管理器具体会检测如下内容:

  • module.prop 内是否包含不符合语法的内容
  • idnameversionauthordescription 是否为空 (如有带有 Ansi 后缀的同样检测)
  • id 是否符合此正则表达式: ^[a-zA-Z][a-zA-Z0-9._-]+$
  • versionCode 是否大于 0
  • module.prop 内是否存在大小写不规范的情况 (ShiroSU 管理器会正常解析,但仍会显示标签)

如果只是 module.prop 损坏,重装模块通常可解决此问题,如果不符合规范,则需要开发者自行修复以解决此问题

模块标签

ShiroSU 管理器默认会在模块名称下方显示一个内容为该模块 id 的小标签, 当模块目录内存在文件名称符合以下正则表达式的文件时,同样也会显示对应的小标签:

  • (?i)^changelogs?(?:[._-][A-Za-z0-9._-]+)?(?:\.(?:txt|md|mkd))?$: 模块的更新日志,点击则会通过弹窗显示内容
  • (?i)^(?:license|licence)(?:[._-][A-Za-z0-9._-]+)?(?:\.(?:txt|md|mkd))?$: 模块的许可证,点击则会通过弹窗显示内容

NOTE

搜索文件时不会搜索子目录内的内容

其他内容

除了 ANSI 转义码 相关内容之外,ShiroSU 管理器还会解析如下内容:

  • action: 定义此内容,会在执行操作前显示弹窗,此内容用于描述操作有何作用
  • runtimeInfo: 定义此内容,会在模块名称旁边显示可点击图标,此内容为文本文件的 模块相对路径/绝对路径,用于描述模块运行时的信息

其他特性

ShiroSU 会在后续更新中提供模块备份接口模块更新接口 (在更新时执行原本模块的代码)模块存储接口 等功能,这些内容尚在规划中,会在后续更新中推出

贡献者

页面历史


  1. ANSI 转义码是一种用于控制文本显示样式的字符编码方式,常用于终端和控制台应用程序中,详见维基百科 ↩︎

/ssu/dev/module/manager