更新Termux应用打开方法

This commit is contained in:
2026-04-30 09:58:50 +08:00
parent a825951aad
commit e3f47043ef
3 changed files with 42 additions and 4 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Thu Apr 30 09:29:52 CST 2026 #Thu Apr 30 01:57:42 GMT 2026
stageCount=26 stageCount=26
libraryProject= libraryProject=
baseVersion=15.11 baseVersion=15.11
publishVersion=15.11.25 publishVersion=15.11.25
buildCount=38 buildCount=42
baseBetaVersion=15.11.26 baseBetaVersion=15.11.26

View File

@@ -59,7 +59,7 @@ public class MyTermuxActivity extends AppCompatActivity {
private void executeSampleCommand() { private void executeSampleCommand() {
if (isTermuxAvailable()) { if (isTermuxAvailable()) {
boolean success = TermuxCommandExecutor.executeTerminalCommand(this, "ls -la /data/data/com.termux/files/home"); boolean success = TermuxCommandExecutor.openTermuxBash(this, "ls -la ./");
if (success) { if (success) {
LogUtils.i(TAG, "命令执行成功"); LogUtils.i(TAG, "命令执行成功");
} else { } else {

View File

@@ -22,6 +22,7 @@ public class TermuxCommandExecutor {
// Termux RunCommandService 完整类名(包名+类名) // Termux RunCommandService 完整类名(包名+类名)
private static final String TERMUX_RUN_CMD_SERVICE_CLASS = "com.termux.app.RunCommandService"; private static final String TERMUX_RUN_CMD_SERVICE_CLASS = "com.termux.app.RunCommandService";
private static final String TERMUX_RUN_CMD_ACTION = TermuxConstants.TERMUX_APP.RUN_COMMAND_SERVICE.ACTION_RUN_COMMAND; private static final String TERMUX_RUN_CMD_ACTION = TermuxConstants.TERMUX_APP.RUN_COMMAND_SERVICE.ACTION_RUN_COMMAND;
private static final String TERMUX_HOME_PATH = "/data/data/com.termux/files/home";
/** /**
* 执行 Termux 命令(核心方法) * 执行 Termux 命令(核心方法)
@@ -173,5 +174,42 @@ public class TermuxCommandExecutor {
LogUtils.d(TAG, "外部应用调用权限提示:" + tip); LogUtils.d(TAG, "外部应用调用权限提示:" + tip);
return tip; return tip;
} }
public static boolean openTermuxBash(Context context, String command) {
LogUtils.d(TAG, "openTermuxBash() 按钮点击执行Gradle命令实时输出");
// 1. 校验Termux是否安装
if (!TermuxCommandExecutor.isTermuxInstalled(context)) {
LogUtils.e(TAG, "openTermuxBash() 错误未安装Termux应用");
return false;
}
// 2. 定义核心路径确保路径与Termux中一致
String projectPath = TERMUX_HOME_PATH + "/"; // 项目目录
// 3. 构造命令核心用stdbuf禁用缓冲实现实时输出
String targetCmd = "";
// 步骤1进入项目目录不存在则创建
targetCmd += "cd " + projectPath + " && ";
// 步骤2加载环境变量
targetCmd += "source ~/.bashrc && ";
// 步骤3显式配置PATH
targetCmd += "export PATH=/data/data/com.termux/files/usr/bin:$PATH && ";
// 步骤4用stdbuf禁用stdout/stderr缓冲关键执行Gradle命令
// -o0stdout无缓冲-e0stderr无缓冲-i0stdin无缓冲
//targetCmd += "stdbuf -o0 -e0 -i0 " + gradleFullPath + " task --all | grep assemble && ";
//targetCmd += "stdbuf -o0 -e0 -i0 " + gradleFullPath + " -Pandroid.aapt2FromMavenOverride=/data/data/com.termux/files/home/android-sdk/build-tools/34.0.4/aapt2 assembleBetaDebug && ";
targetCmd += "stdbuf -o0 -e0 -i0 bash && ";
// 步骤5执行成功提示
targetCmd += "echo '\n✅ 命令执行完成!' && echo '\n📌 当前目录:" + projectPath + "' && read -p '按回车键关闭终端...'";
// 4. 执行命令终端会话模式唤起Termux窗口
boolean cmdSuccess = TermuxCommandExecutor.executeTerminalCommand(context, targetCmd);
if (!cmdSuccess) {
return true;
}
return false;
}
} }