新增 Android 版(Kotlin + Compose,CLI-only 工具鏈)
This commit is contained in:
93
android/README.md
Normal file
93
android/README.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# 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` 直接跑在手機上看也沒差多少。
|
||||
Reference in New Issue
Block a user