From ac8b789bcb15ebb7e705246c3b5dee52969570d6 Mon Sep 17 00:00:00 2001 From: BigPickle Date: Tue, 2 Jun 2026 18:09:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(Termux):=20=E4=BF=AE=E5=A4=8D=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E5=91=BD=E4=BB=A4=E6=9C=AA=E6=89=A7=E8=A1=8C=E5=8F=8A?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=80=BC=E5=8F=8D=E8=BD=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 stdbuf bash 占位,改为执行命令后进入交互终端 - 替换 \n 为 ; 以支持多行命令分段执行 - 修复 executeTerminalCommand 返回值反转逻辑 - MyTermuxActivity列表文字颜色 white→black 适配浅色主题 --- .../winboll/termux/MyTermuxActivity.java | 2 +- .../winboll/termux/TermuxCommandExecutor.java | 19 +++++++------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/winboll/src/main/java/cc/winboll/studio/winboll/termux/MyTermuxActivity.java b/winboll/src/main/java/cc/winboll/studio/winboll/termux/MyTermuxActivity.java index 6d71366..10763b8 100644 --- a/winboll/src/main/java/cc/winboll/studio/winboll/termux/MyTermuxActivity.java +++ b/winboll/src/main/java/cc/winboll/studio/winboll/termux/MyTermuxActivity.java @@ -230,7 +230,7 @@ public class MyTermuxActivity extends AppCompatActivity { TermuxButtonModel model = mButtonList.get(position); tv.setText(model.getButtonName() + "\n" + model.getExeCommand()); - tv.setTextColor(getResources().getColor(android.R.color.white)); + tv.setTextColor(getResources().getColor(android.R.color.black)); return tv; } } 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 5410ec2..f88aafc 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 @@ -202,21 +202,16 @@ public class TermuxCommandExecutor { targetCmd += "source ~/.bashrc && "; // 步骤3:显式配置PATH targetCmd += "export PATH=/data/data/com.termux/files/usr/bin:$PATH && "; - // 步骤4:用stdbuf禁用stdout/stderr缓冲(关键!),执行Gradle命令 - // -o0:stdout无缓冲;-e0:stderr无缓冲;-i0:stdin无缓冲 - //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:将用户输入的字面\n转换为shell命令分隔符, + // 确保"cd ~/Sources\npwd"这类输入能分段执行 + String execCommand = command.replace("\\n", "; "); + // 步骤5:执行设定的命令(直接由外层bash解释,避免stdbuf对shell内置命令无效) + // 步骤6:命令执行完后用stdbuf启动交互式bash,保持终端可见 + targetCmd += execCommand + "; stdbuf -o0 -e0 -i0 bash"; // 4. 执行命令(终端会话模式,唤起Termux窗口) - boolean cmdSuccess = TermuxCommandExecutor.executeTerminalCommand(context, targetCmd); - if (!cmdSuccess) { - return true; - } - return false; + return TermuxCommandExecutor.executeTerminalCommand(context, targetCmd); } }