Termux介绍
Termux是一款开源的Android终端模拟器,使用apt和dpkg作为包管理工具,可以轻松安装、升级和管理各种软件包。
Termux为多种编程语言提供了支持,包括Python、Ruby、Node.js、PHP、Perl等,简单配置后可以在Android设备上编写和运行代码。还提供了丰富的命令行工具,如grep、awk、sed以及各种文本处理和网络诊断工具。
Termux允许用户访问和管理Android设备上的文件,包括内部存储和外部存储。同时包含SSH客户端和服务器,允许用户远程连接到其他计算机或者让其他计算机连接到Termux。此外还支持版本控制系统如Git和Subversion,用户可以在其设备上进行版本控制操作。
调用Termux执行命令
自Termux 0.95版起,第三方应用程序可以通过向RunCommandService发送intent或成为termux-tasker插件客户端的插件,在Termux应用程序上下文中运行命令。
- 配置Termux允许外部应用调用: 打开Termux,修改~/.termux/termux.properities文件,添加一行:
allow-external-apps = true
对于安卓版本>=10.0,需要给Termux启用关联应用权限,否则将不允许第三方应用直接后台启动Termux,而是当Termux在后台运行时才能调用。
启用「关联应用」权限:【应用信息】 -> 【应用】 -> 【Termux】 -> 【权限】 -> 【关联应用】。
- 应用配置: 在AndroidManifest.xml文件中请求com.termux.permission.RUN_COMMAND权限,在代码中给RunCommandService发送Intent。
<uses-permission android:name="com.termux.permission.RUN_COMMAND"/>
代码中Intent构建:
intent.setClassName("com.termux", "com.termux.app.RunCommandService");
intent.setAction("com.termux.RUN_COMMAND");
intent.putExtra("com.termux.RUN_COMMAND_PATH", "/data/data/com.termux/files/usr/bin/top");
intent.putExtra("com.termux.RUN_COMMAND_ARGUMENTS", new String[]{"-n", "5"});
intent.putExtra("com.termux.RUN_COMMAND_WORKDIR", "/data/data/com.termux/files/home");
intent.putExtra("com.termux.RUN_COMMAND_BACKGROUND", false);
intent.putExtra("com.termux.RUN_COMMAND_SESSION_ACTION", "0");
startService(intent);
相关参数说明:
- com.termux.RUN_COMMAND_PATH:调用的ELF文件;
- com.termux.RUN_COMMAND_ARGUMENTS:调用命令参数;
- com.termux.RUN_COMMAND_WORKDIR:工作目录;
- com.termux.RUN_COMAND_BACKGROUND:是否后台运行。如果为true则不会进入TermuxActivity;
- com.termux.RUN_COMMAND_SESSION_ACTION:会话动作。
此处调用的是top命令:/data/data/com.termux/files/usr/bin/top