From dadf573675109e0c7dd48561bbd8e43b53dc8af1 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Thu, 30 Apr 2026 10:42:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9BTermux=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=87=BD=E6=95=B0=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?TermuxWorkSpaces=E6=8C=89=E9=92=AE=E5=93=8D=E5=BA=94=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- winboll/build.properties | 4 +- .../applications/MyTermuxActivity.java | 49 ++++++++++--------- .../winboll/termux/TermuxCommandExecutor.java | 11 ++++- 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/winboll/build.properties b/winboll/build.properties index 3a08937..9f3d12c 100644 --- a/winboll/build.properties +++ b/winboll/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Thu Apr 30 02:12:23 GMT 2026 +#Thu Apr 30 02:41:13 GMT 2026 stageCount=26 libraryProject= baseVersion=15.11 publishVersion=15.11.25 -buildCount=46 +buildCount=54 baseBetaVersion=15.11.26 diff --git a/winboll/src/main/java/cc/winboll/studio/winboll/applications/MyTermuxActivity.java b/winboll/src/main/java/cc/winboll/studio/winboll/applications/MyTermuxActivity.java index d2e6eb3..5e7bddd 100644 --- a/winboll/src/main/java/cc/winboll/studio/winboll/applications/MyTermuxActivity.java +++ b/winboll/src/main/java/cc/winboll/studio/winboll/applications/MyTermuxActivity.java @@ -15,6 +15,7 @@ public class MyTermuxActivity extends AppCompatActivity { private Toolbar mToolbar; private Button mTermuxButton; + private Button mTermuxWorkSpacesButton; @Override protected void onCreate(Bundle savedInstanceState) { @@ -24,7 +25,7 @@ public class MyTermuxActivity extends AppCompatActivity { // 初始化工具栏 initToolbar(); // 初始化按钮 - initTermuxButton(); + initView(); } private void initToolbar() { @@ -33,38 +34,40 @@ public class MyTermuxActivity extends AppCompatActivity { setSupportActionBar(mToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - LogUtils.d(TAG, "点击返回按钮"); - finish(); - } - }); + @Override + public void onClick(View v) { + LogUtils.d(TAG, "点击返回按钮"); + finish(); + } + }); LogUtils.d(TAG, "工具栏初始化完成"); } } - private void initTermuxButton() { + private void initView() { mTermuxButton = findViewById(R.id.btn_termux); if (mTermuxButton != null) { mTermuxButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - LogUtils.d(TAG, "点击 Termux 按钮"); - executeSampleCommand(); - } - }); + @Override + public void onClick(View v) { + LogUtils.d(TAG, "点击 Termux 按钮"); + TermuxCommandExecutor.openTermuxBash(MyTermuxActivity.this, "cd ~"); + //TermuxCommandExecutor.openTermuxBash(MyTermuxActivity.this, "cd ~/TermuxWorkSpaces", "./TermuxWorkSpaces"); + } + }); LogUtils.d(TAG, "Termux 按钮初始化完成"); } - } - private void executeSampleCommand() { - if (isTermuxAvailable()) { - boolean success = TermuxCommandExecutor.openTermuxBash(this, "ls -la ./"); - if (success) { - LogUtils.i(TAG, "命令执行成功"); - } else { - LogUtils.e(TAG, "命令执行失败"); - } + mTermuxWorkSpacesButton = findViewById(R.id.btn_termuxworkspaces); + if (mTermuxWorkSpacesButton != null) { + mTermuxWorkSpacesButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + LogUtils.d(TAG, "点击 TermuxWorkSpaces 按钮"); + TermuxCommandExecutor.openTermuxBash(MyTermuxActivity.this, "cd ~/TermuxWorkSpaces", "./TermuxWorkSpaces"); + } + }); + LogUtils.d(TAG, "TermuxWorkSpaces 按钮初始化完成"); } } diff --git a/winboll/src/main/java/cc/winboll/studio/winboll/termux/TermuxCommandExecutor.java b/winboll/src/main/java/cc/winboll/studio/winboll/termux/TermuxCommandExecutor.java index b8f4691..5410ec2 100644 --- a/winboll/src/main/java/cc/winboll/studio/winboll/termux/TermuxCommandExecutor.java +++ b/winboll/src/main/java/cc/winboll/studio/winboll/termux/TermuxCommandExecutor.java @@ -115,7 +115,7 @@ public class TermuxCommandExecutor { context, "/data/data/com.termux/files/usr/bin/bash", // Termux 默认 bash 路径(正确) args, - "/data/data/com.termux/files/home", // 默认工作目录 + TERMUX_HOME_PATH, // 默认工作目录 false, // 终端会话执行(可见) null // 不输出到文件 ); @@ -176,6 +176,10 @@ public class TermuxCommandExecutor { } public static boolean openTermuxBash(Context context, String command) { + return openTermuxBash(context, command, "~"); + } + + public static boolean openTermuxBash(Context context, String command, String workDir) { LogUtils.d(TAG, "openTermuxBash() 按钮点击,执行Gradle命令(实时输出)"); // 1. 校验Termux是否安装 @@ -185,7 +189,10 @@ public class TermuxCommandExecutor { } // 2. 定义核心路径(确保路径与Termux中一致) - String projectPath = TERMUX_HOME_PATH + "/"; // 项目目录 + String projectPath = TERMUX_HOME_PATH; + if (workDir.startsWith("~") || workDir.startsWith(".")) { + projectPath = TERMUX_HOME_PATH + "/" + workDir.substring(1); + } // 3. 构造命令(核心:用stdbuf禁用缓冲,实现实时输出) String targetCmd = "";