專案

一般

配置概況

動作

Improvement #277

進行中
SC

build: 補 gradle-wrapper.jar + foojay toolchain resolver,本機/任意 JDK 可跑 :core:test

Improvement #277: build: 補 gradle-wrapper.jar + foojay toolchain resolver,本機/任意 JDK 可跑 :core:test

是由 Sashiba Chou約 2 個月 前加入.

狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-06-09
完成日期:
完成比例:

0%

預估工時:

概述

build: 補 gradle-wrapper.jar + foojay toolchain resolver,本機/任意 JDK 可跑 :core:test

背景

T2-06a 的 53 個 :core 單元測試先前完全靠 GitHub Actions CI 驗證,本機無法跑,原因有二:

  1. repo 缺 android/gradle/wrapper/gradle-wrapper.jar(二進位,先前由 agent 建置時無法生成)→ ./gradlew 直接失敗,clone 下來的人也跑不了。
  2. build 設定 jvmToolchain(17),但開發機(Android Studio 內建 JBR)是 JDK 21,無獨立 JDK 17 → Gradle 找不到 17 toolchain 會報錯。

結果是只能拿 CI 當編譯器,改一行要等一輪 CI(~1 分鐘),debug 編譯錯誤時三輪來回,非常沒效率。本票補齊本機建置能力。

變更內容

  1. 新增 android/gradle/wrapper/gradle-wrapper.jar(45,457 bytes)
  • 以本機快取的 gradle 9.1.0 在暫存空目錄執行 gradle wrapper --gradle-version 8.7 --distribution-type bin 產生,複製進 repo
  • wrapper properties 已指向 gradle 8.7(與 CI 一致),此 jar 僅負責 bootstrap 下載對應發行版
  1. android/settings.gradle.kts 加 foojay toolchains resolver
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
  • 只有其他 JDK(如 JBR 21)的機器會自動下載 JDK 17 toolchainjvmToolchain(17) 得以解析
  • CI 不受影響:CI 由 setup-java 直接提供 JDK 17,resolver 形同 no-op

驗收標準

  • 本機 JAVA_HOME=<JBR21>gradlew :core:test --no-daemonBUILD SUCCESSFUL(已實測,53 測試本機通過,gradle 8.7 + 自動補 JDK 17)
  • CI android-core-tests 仍綠(確認 foojay + 既有 wrapper jar 不破壞 CI)
  • 其他開發者 clone 後 gradlew :core:test 可直接跑(不需手動裝 JDK 17)

後續

  • 往後改 android 程式碼:先本機跑綠再 push,CI 退回「最後關卡」角色,不再當編譯器用
  • T2-06b(Room)起需 Android SDK;本機 Android Studio 已含(%LOCALAPPDATA%\Android\Sdk

沒有任何資料可供顯示

動作

匯出至 PDF Atom