# Android 版(Kotlin + Jetpack Compose,不需要 Android Studio) 用 CLI(`sdkmanager` + `gradle`)從零到 APK 全程在 terminal 完成。編輯用任何 editor / Claude Code 即可。 ## 一次性環境設定 ### 1. JDK 17 與 Gradle ```bash brew install openjdk@17 gradle # 讓系統找得到 openjdk@17 sudo ln -sfn "$(brew --prefix)/opt/openjdk@17/libexec/openjdk.jdk" \ /Library/Java/JavaVirtualMachines/openjdk-17.jdk # 加到 ~/.zshrc export JAVA_HOME="$(/usr/libexec/java_home -v 17)" ``` ### 2. Android SDK(只裝 cmdline-tools / platform-tools / build-tools,不裝 IDE) ```bash brew install --cask android-commandlinetools # 加到 ~/.zshrc export ANDROID_HOME="/opt/homebrew/share/android-commandlinetools" # Apple Silicon # 若是 Intel Mac:export ANDROID_HOME="/usr/local/share/android-commandlinetools" export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools" # 裝必要元件 sdkmanager --install "platform-tools" "platforms;android-34" "build-tools;34.0.0" yes | sdkmanager --licenses ``` 確認路徑被 Gradle 看得到,在 `android/` 下建一個 `local.properties`: ``` sdk.dir=/opt/homebrew/share/android-commandlinetools ``` (或讓 `ANDROID_HOME` 環境變數生效也行,Gradle 會自己找。) ### 3. 產生 Gradle wrapper(只要做一次,之後就都用 `./gradlew`) ```bash cd android gradle wrapper --gradle-version 8.9 --distribution-type bin ``` ## 編譯 ```bash cd android ./gradlew assembleDebug # 產物:app/build/outputs/apk/debug/app-debug.apk ``` Release build(未簽章,只能自己用): ```bash ./gradlew assembleRelease # 產物:app/build/outputs/apk/release/app-release-unsigned.apk ``` ## 安裝到手機 ```bash # 1. 手機開「開發人員選項」→「USB 偵錯」 # 2. USB 接上 adb devices # 應列出裝置 adb install -r app/build/outputs/apk/debug/app-debug.apk ``` ## 程式結構 單一 Activity + Compose,所有邏輯在 `app/src/main/java/tw/local/botrates/MainActivity.kt`: - `fetchRates()`:`HttpURLConnection` 抓台銀 CSV,同樣用欄位索引 13(即期賣出)解析 - `App()`:Compose UI,每個幣別一列:幣別+匯率 / 金額輸入 / TWD 結果 / 複製鈕 - 複製用 `ClipboardManager.setPrimaryClip`,Toast 提示「已複製」 ### 想改的地方 | 改什麼 | 位置 | |--------|------| | 新增幣別 | `MainActivity.kt` 頂端 `TARGETS` | | 買入/賣出 | `fetchRates()` 內的 `cols[13]`(見根 `QUICKSTART.md` 的欄位表) | | 視覺配色 | `RateRow()` 裡的 `Color(0xFF...)` 常數 | | applicationId / 版本 | `app/build.gradle.kts` 的 `defaultConfig` | ## 為什麼不用 Android Studio AS 整包 2GB+,但實際需要的只有 JDK + Android SDK platform + build-tools(加起來 300MB 左右)。Gradle 本身也是 CLI 工具。Compose 的開發體驗在純 editor 下唯一損失的是即時 Preview,但寫完 `./gradlew installDebug` 直接跑在手機上看也沒差多少。