# Hoops — Android
一個籃球小遊戲的 Android 包裝。遊戲本體是純 HTML5 Canvas,這個 app 就是一層全螢幕 WebView 殼。
## 為什麼這樣做
- **沒有網路權限** — 遊戲完全離線,所有資源都打包在 `assets/` 裡。
- **沒有第三方追蹤** — 沒有 Google Play Services、沒有 Analytics、沒有任何網路請求。
- **沒有自定義 Activity 之外的東西** — 整個 app 就一個 `MainActivity.kt`,七十幾行。
- **F-Droid 友好** — 純開源、無 proprietary 依賴、無外部資源。
## 專案結構
```
hoops-android/
├── app/
│ ├── build.gradle.kts
│ └── src/main/
│ ├── AndroidManifest.xml
│ ├── java/blog/wiwi/hoops/MainActivity.kt
│ ├── assets/index.html ← 整個遊戲在這裡
│ └── res/ ← icon、主題、字串
├── build.gradle.kts
├── settings.gradle.kts
└── gradle.properties
```
**最重要的是 `app/src/main/assets/index.html`**——這是整個遊戲。要改遊戲邏輯,改這個檔案就好,其他 Android 殼層的東西完全不用碰。
## 怎麼建置
### 第一次
1. 安裝 [Android Studio](https://developer.android.com/studio)(或裝 command-line 的 Android SDK)
2. 用 Android Studio 開啟 `hoops-android` 資料夾
3. 等 Gradle sync 完(第一次會下載一些東西)
4. **產生 Gradle wrapper**——在專案根目錄跑:
```bash
gradle wrapper --gradle-version 8.7
```
或在 Android Studio 裡點 `File → Sync Project with Gradle Files`,它會自己生成 `gradlew`、`gradlew.bat`、`gradle/wrapper/gradle-wrapper.jar`。
### 建置 debug APK(測試用)
```bash
./gradlew assembleDebug
```
APK 會在 `app/build/outputs/apk/debug/app-debug.apk`,可以直接 adb install 到手機。
### 建置 release APK(要簽章)
先產生 keystore:
```bash
keytool -genkey -v -keystore hoops-release.keystore \
-alias hoops -keyalg RSA -keysize 2048 -validity 10000
```
建一個 `keystore.properties`(**不要 commit 到 git**):
```properties
storeFile=../hoops-release.keystore
storePassword=你的密碼
keyAlias=hoops
keyPassword=你的密碼
```
修改 `app/build.gradle.kts`,加上 signing config(看註解的位置)。然後:
```bash
./gradlew assembleRelease
```
## 怎麼測
### 在電腦上先測網頁版
直接在瀏覽器打開 `app/src/main/assets/index.html`——它就是個獨立的 HTML 檔,可以直接跑。
這是改遊戲邏輯時最快的迭代方式。
### 用 Android emulator 測
1. Android Studio → Device Manager → 建一個 Pixel 5 之類的 emulator
2. 點綠色 ▶ 跑
### 用實機測
1. 手機開「開發人員選項」→「USB 偵錯」
2. USB 接電腦
3. Android Studio 應該會看到裝置
4. 點 ▶ 跑
## 上 F-Droid 的注意事項
F-Droid 會自己從你的 git repo 建置 APK,所以:
1. **把整個專案推到公開 git repo**(GitHub、Codeberg 都行)
2. **打 git tag** 標版本,例如 `v1.0.0`
3. **送 metadata PR** 到 [fdroiddata](https://gitlab.com/fdroid/fdroiddata),告訴 F-Droid 怎麼建置你的 app
metadata yml 大致長這樣:
```yaml
Categories:
- Games
License: MIT # 或你選的授權
SourceCode: https://github.com/你/hoops-android
IssueTracker: https://github.com/你/hoops-android/issues
AutoName: Hoops
RepoType: git
Repo: https://github.com/你/hoops-android.git
Builds:
- versionName: 1.0.0
versionCode: 1
commit: v1.0.0
subdir: app
gradle:
- yes
AutoUpdateMode: Version
UpdateCheckMode: Tags
CurrentVersion: 1.0.0
CurrentVersionCode: 1
```
完整文件:
### F-Droid 會檢查的東西
- ❌ 不能依賴 Google Play Services / Firebase
- ❌ 不能有 proprietary 二進位依賴
- ❌ 不能呼叫追蹤服務(Analytics、Crashlytics 等)
- ✅ 純 OSS 依賴
- ✅ 從原始碼可重現建置
這個專案天生就符合所有條件——只用 androidx,沒有任何 proprietary 東西。
## 常見問題
**Q: 為什麼不直接做成 PWA?**
A: PWA 也是個好方案,但要上 F-Droid 必須是真正的 Android app。
**Q: 改了 `index.html` 怎麼快速看效果?**
A: 雙擊用瀏覽器開那個檔案,直接玩。要看 Android 上的效果再 build。
**Q: APK 大概多大?**
A: 約 2–4 MB。幾乎全部是 androidx 的 Kotlin 標準庫。`assets/index.html` 本身不到 30 KB。
**Q: 想加新遊戲模式怎麼辦?**
A: 改 `index.html`,重 build。Kotlin 那邊永遠不需要改。