Skip to content

zt 命令系统

zt 是终端侧和 Android 侧之间的通道。终端里执行 zt xxx 后,可能会打开 Android 弹窗、控制 X11、调用 VNC,或者让主界面执行动作。

核心文件

文件说明
ZTSocketService.java命令服务,接收并分发请求
ZTCommandConfigStore.java命令注册表
ZTKeyConstants.java命令字符串和 ID 常量
ZTConfig.java命令处理接口
assets/runcommand/zt终端侧 zt 命令脚本

已有命令

命令短命令说明
help查看帮助
versionv查看命令版本
toast显示 Toast
openleftol打开左侧栏
openrightor打开右侧栏
rebootrb重启 Termux
ln创建软链接
vnc打开 VNC
x11commandshowx11xs显示 X11 终端
x11commandhidex11xh隐藏 X11 终端
x11status查询 X11 状态
x11keyboardshowx11kbs显示 X11 键盘
x11keyboardhidex11kbh隐藏 X11 键盘
dialog显示弹窗
qr打开扫一扫
backgroundimagebgi设置背景图片
menu更新或重置 XML 菜单

新增命令步骤

1. 增加常量

ZTKeyConstants.java 中添加 ID 和命令字符串:

java
public static final int ZT_ID_EXAMPLE = 18;
public static final String ZT_COMMAND_EXAMPLE = "example";

如果需要短命令,也加一个:

java
public static final String ZT_COMMAND_EXAMPLE_1 = "ex";

2. 实现配置类

config/ztcommand/config/ 下新增类,实现 ZTConfig

通常需要提供:

  • 命令 ID。
  • 是否转发。
  • 命令处理逻辑。
  • 返回给终端的文本或 JSON。

可以参考:

text
ToastConfig.java
VersionConfig.java
ConfirmedDialogConfig.java
ZTBackgroundImageConfig.java
XmlMenuConfig.java

3. 注册命令

ZTCommandConfigStore.java 中注册字符串到 ID:

java
map_array_command.put(ZTKeyConstants.ZT_COMMAND_EXAMPLE, ZTKeyConstants.ZT_ID_EXAMPLE);
map_array_command.put(ZTKeyConstants.ZT_COMMAND_EXAMPLE_1, ZTKeyConstants.ZT_ID_EXAMPLE);

再注册实现:

java
register(new ExampleConfig());

4. 更新帮助文本

帮助文本在中文资源里:

text
app/src/main/res/values-zh-rCN/strings.xml

搜索:

text
zt_command_help

把新命令的用法写进去。

5. 测试

安装新版 APK 后,在终端执行:

bash
zt help
zt example
zt ex

如果提示“不支持或ZT版本低不识别”,说明命令没有注册成功,优先检查 ZTCommandConfigStore

常见问题

  • 只写了 ZTConfig,忘了在 ZTCommandConfigStore 注册。
  • 注册了长命令,忘了注册短命令。
  • 更新了 Java 常量,忘了更新帮助文案。
  • 命令需要 Activity 上下文,但服务侧没有可用 UI 上下文。
  • 命令参数里包含空格,解析逻辑没有处理好。
  • 改完 APK 但没有确认 $PREFIX/usr/bin/zt 是否已经更新。
  • 只在 Java 里测试,没有真的到终端里敲命令。

Released under the MIT License.