From 588da4a2eb4c34438b17d5c98f93fcfb582f4eeb Mon Sep 17 00:00:00 2001 From: sky121113 Date: Wed, 10 Jun 2026 10:25:48 +0800 Subject: [PATCH] =?UTF-8?q?[CHORE]=20APK=20workflow=20=E5=BC=B7=E6=AE=BA?= =?UTF-8?q?=E9=98=B2=E5=91=86=20+=20=E6=96=B0=E5=A2=9E=20Claude=20Code=20s?= =?UTF-8?q?lash=20command?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - .agents/workflows/{compiler,release}-apk.md:Gradle Daemon 終止改防呆—— 先優雅 ./gradlew --stop,僅在仍殘留時才升級終止(先 TERM 再 KILL), 避免無差別 pkill -9 撞鎖導致 clean 編譯隨機失敗。 - .claude/commands/{compiler,release}-apk.md:新增對應 slash command(薄包裝, 指向 .agents/workflows 單一真相來源,處理參數注入與 Java 17 環境)。 Co-Authored-By: Claude Opus 4.8 --- .agents/workflows/compiler-apk.md | 12 +++++++++++- .agents/workflows/release-apk.md | 12 +++++++++++- .claude/commands/compiler-apk.md | 22 ++++++++++++++++++++++ .claude/commands/release-apk.md | 23 +++++++++++++++++++++++ 4 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 .claude/commands/compiler-apk.md create mode 100644 .claude/commands/release-apk.md diff --git a/.agents/workflows/compiler-apk.md b/.agents/workflows/compiler-apk.md index a2242dd..1175cce 100644 --- a/.agents/workflows/compiler-apk.md +++ b/.agents/workflows/compiler-apk.md @@ -24,7 +24,17 @@ description: 自動編譯 Android APK、輸出至專屬目錄並安裝至實體 ```bash // turbo # 終止殘留的 Gradle Daemon 程序,避免多個 Daemon 互搶資源,同時避免誤殺 VS Code Gradle 擴充功能 -./gradlew --stop 2>/dev/null; pkill -9 -f "org.gradle.launcher.daemon.bootstrap.GradleDaemon" 2>/dev/null; sleep 3 +# 防呆:先優雅 --stop;僅在仍殘留時才升級終止(先 TERM 再 KILL),避免無差別強殺撞鎖導致 clean 編譯隨機失敗 +./gradlew --stop 2>/dev/null || true +sleep 2 +if pgrep -f "org.gradle.launcher.daemon.bootstrap.GradleDaemon" >/dev/null 2>&1; then + pkill -TERM -f "org.gradle.launcher.daemon.bootstrap.GradleDaemon" 2>/dev/null || true + sleep 3 + if pgrep -f "org.gradle.launcher.daemon.bootstrap.GradleDaemon" >/dev/null 2>&1; then + pkill -9 -f "org.gradle.launcher.daemon.bootstrap.GradleDaemon" 2>/dev/null || true + sleep 2 + fi +fi export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 cd /home/mama/projects/TaiwanStar_general_size_s_Chengwai diff --git a/.agents/workflows/release-apk.md b/.agents/workflows/release-apk.md index 2f91a70..7dd50b3 100644 --- a/.agents/workflows/release-apk.md +++ b/.agents/workflows/release-apk.md @@ -25,7 +25,17 @@ description: 自動編譯正式發行 Release APK、升級 Patch 版本號、並 ```bash // turbo # 終止殘留的 Gradle Daemon 程序,避免多個 Daemon 互搶資源,同時避免誤殺 VS Code Gradle 擴充功能 -./gradlew --stop 2>/dev/null; pkill -9 -f "org.gradle.launcher.daemon.bootstrap.GradleDaemon" 2>/dev/null; sleep 3 +# 防呆:先優雅 --stop;僅在仍殘留時才升級終止(先 TERM 再 KILL),避免無差別強殺撞鎖導致 clean 編譯隨機失敗 +./gradlew --stop 2>/dev/null || true +sleep 2 +if pgrep -f "org.gradle.launcher.daemon.bootstrap.GradleDaemon" >/dev/null 2>&1; then + pkill -TERM -f "org.gradle.launcher.daemon.bootstrap.GradleDaemon" 2>/dev/null || true + sleep 3 + if pgrep -f "org.gradle.launcher.daemon.bootstrap.GradleDaemon" >/dev/null 2>&1; then + pkill -9 -f "org.gradle.launcher.daemon.bootstrap.GradleDaemon" 2>/dev/null || true + sleep 2 + fi +fi export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 cd /home/mama/projects/TaiwanStar_general_size_s_Chengwai diff --git a/.claude/commands/compiler-apk.md b/.claude/commands/compiler-apk.md new file mode 100644 index 0000000..5afe7ed --- /dev/null +++ b/.claude/commands/compiler-apk.md @@ -0,0 +1,22 @@ +--- +description: 編譯 Debug APK、導出 outputs/、偵測到設備則安裝(晟崴/通用/中國醫,可選硬體尺寸) +argument-hint: [General|Chengwai|Cmuh] [S9|S12] +allowed-tools: Bash, Read, Edit +--- + +執行本專案的 APK 編譯安裝 workflow,定義於 `.agents/workflows/compiler-apk.md`(單一真相來源)。 + +本次參數:「$ARGUMENTS」(第一個=Flavor,第二個=硬體 S9/S12;可能為空) + +## 執行方式 +1. 先 Read `.agents/workflows/compiler-apk.md`,理解步驟零~三。 +2. 步驟零(版號):執行 `git status --porcelain app/`;若有未提交改動且本輪對話尚未升過版,讀 `app/build.gradle` 把 `verPatch` 遞增 1 並回報新版號。 +3. 步驟一~三:依序執行 workflow 內每個 bash 區塊。**關鍵**:workflow 的 bash 以位置參數取得 Flavor 與硬體,所以執行每個區塊前,先在區塊最前面注入本次參數,例如: + + set -- $ARGUMENTS + + 讓 workflow 內的位置參數正確解析(第一個=Flavor、第二個=S9/S12)。若本次無參數,workflow 自身預設 Chengwai+智慧硬體。 +4. 環境用 workflow 指定的 Java 17(`JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64`)。 +5. 編譯/導出屬長任務 → 用 run_in_background,完成再回報。 +6. 步驟三會偵測 adb 設備:有連設備才安裝並啟動 App;沒設備就保留 APK 結束。 +7. 最後完整回報 workflow 輸出的「後台 keyin 參考資料」(Flavor / versionName / versionCode / APK 檔名)。 diff --git a/.claude/commands/release-apk.md b/.claude/commands/release-apk.md new file mode 100644 index 0000000..77369f5 --- /dev/null +++ b/.claude/commands/release-apk.md @@ -0,0 +1,23 @@ +--- +description: 正式版 Release APK 打包、升 Patch 版號、產出 OTA keyin 與 Git tag 指引(晟崴/通用/中國醫) +argument-hint: [General|Chengwai|Cmuh] +allowed-tools: Bash, Read, Edit +--- + +執行本專案的正式發版 workflow,定義於 `.agents/workflows/release-apk.md`(單一真相來源)。 + +本次參數:「$ARGUMENTS」(Flavor;可能為空,預設 Chengwai) + +## 執行方式 +1. 先 Read `.agents/workflows/release-apk.md`,理解步驟零~三。 +2. 步驟零(OTA 鐵律):讀 `app/build.gradle` 把 `verPatch` 遞增 1(確保 versionCode 變大可觸發 OTA),回報新版號。 +3. 步驟一~三:依序執行 workflow 內每個 bash 區塊。**關鍵**:workflow 的 bash 以位置參數取得 Flavor,執行每個區塊前先注入本次參數: + + set -- $ARGUMENTS + + 無參數時預設 Chengwai。硬體:Cmuh→S9XYU,其餘→S12XYU。 +4. 環境用 Java 17(`JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64`);Release 會跑混淆與 lintVital,較久 → 用 run_in_background。 +5. 步驟二導出正式簽章 APK 到 `outputs/` 並印出 OTA 後台 keyin 對照資料。 +6. 步驟三回報 Git 發版 tag 指引。 + +> 注意:這是「正式發版」,會升版號並產正式簽章 APK。除非使用者明確指示,不要自行 commit / push / 打 tag,只回報指引。