TaiwanStar_general_size_s_C.../.agents/rules/versioning.md
sky121113 e15d0209c6 [FEAT] 新增遠端 MQTT 應用程式 OTA 更新功能與雙版號動態計算機制
1. 新增 OtaManager.java:實現背景下載 APK 檔案至應用程式私有快取空間,並透過 Root 權限 (su 與 pm install -r) 進行靜默覆蓋安裝的完整邏輯。
2. 修改 MqttService.java:支援 update_app MQTT 指令,解析 payload 中的 url 參數並啟動 OtaManager 進行 OTA 更新。
3. 修改 app/build.gradle:實作雙版號動態計算機制,定義 verMajor、verMinor、verPatch,以符合實體機台的 OTA 覆蓋安裝規範。
4. 新增 .agents/rules/versioning.md:制訂專案版號與發版規範。
5. 修改 .agents/workflows/compiler-apk.md:調整編譯工作流,在編譯前自動檢查程式碼變更與遞增版號,並支援動態尋找編譯產出的最新 APK。
6. 修改 .gitignore:排除 .antigravitycli/ 工具產生的目錄。
7. 修改 .vscode/settings.json:設定自動更新 Java 的建置組態。
2026-05-22 16:04:52 +08:00

2.4 KiB
Raw Blame History

trigger
always_on

TaiwanStar 專案版號與發版規範

本規範定義了本專案(販賣機機台 App的版號命名、自動化計算、實體機台 OTA 更新原則,以確保後續開發與發版時版本管理高度穩定。

1. 雙版號動態計算機制 (Double Versioning Scheme)

本專案採用三段式版號變數進行自動化計算,所有配置皆於 app/build.gradle 頂部定義。

Important

開發人員與 AI 助手在修改版號時,嚴禁直接寫死 versionCodeversionName,必須透過修改 Gradle 頂部的變數來進行。

  • verMajor (大版號):代表重大架構變更或大型系統改版(例如 10)。
  • verMinor (次版號):代表新增商業功能、硬體支援,但向下相容(例如 8)。
  • verPatch (修補版號):代表 Bug 修復、小優化(例如 5)。

計算公式:

  • versionCode = verMajor * 10000 + verMinor * 100 + verPatch
  • versionName = "${verMajor}_0${verMinor}_${verPatch}_R"

2. 實體機台 OTA 自動更新鐵律

因為本 App 部署於實體販賣機,更新主要透過後台進行遠端自動下載覆蓋安裝 (OTA)。

Caution

每次釋出任何新版 APK 至生產環境,versionCode 必須嚴格大於前一次發佈的數值!

  • versionCode 相同,即便 versionName 不同(例如從 10_08_2_R 改為 10_08_5_R),機台下載後也會因 INSTALL_FAILED_ALREADY_EXISTS 錯誤而拒絕覆蓋安裝,導致遠端自動升級完全失效。

3. 機台套件與產品風味 (Product Flavors) 命名定義

  • 命名結構[螢幕尺寸]_[Android版本]_[主板與機型規格]
  • 現行標準 FlavorS_12_XY_U_Standard_
    • S:代表 Small 尺寸螢幕(一般 S 號)。
    • 12:代表針對 Android 12 系統優化之版本。
    • XY_U_Standard_:代表 XY 主板、U 規格標準版。
  • 擴充原則:未來引進新硬體時,必須新增 Flavor 並遵循此命名格式(例如:M_12_XY_U_Standard_)。

4. Git 發版配合流程

  1. develop 拉出 release/10.8.5 發版分支。
  2. 遞增 app/build.gradle 中的 verPatch 變數並 Commit。
  3. 測試無誤後,合併回 maindevelop
  4. 必須在 main 合併節點打上 Git Tag,格式為 v[Major].[Minor].[Patch](例如 v10.8.5),以便日後追溯特定現場機台的版本程式碼。