Android 版(Kotlin + Jetpack Compose,不需要 Android Studio)
用 CLI(sdkmanager + gradle)從零到 APK 全程在 terminal 完成。編輯用任何 editor / Claude Code 即可。
一次性環境設定
1. JDK 17 與 Gradle
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)
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)
cd android
gradle wrapper --gradle-version 8.9 --distribution-type bin
編譯
cd android
./gradlew assembleDebug
# 產物:app/build/outputs/apk/debug/app-debug.apk
Release build(未簽章,只能自己用):
./gradlew assembleRelease
# 產物:app/build/outputs/apk/release/app-release-unsigned.apk
安裝到手機
# 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 直接跑在手機上看也沒差多少。