# 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` 直接跑在手機上看也沒差多少。
