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 的建置組態。
2.4 KiB
2.4 KiB
| trigger |
|---|
| always_on |
TaiwanStar 專案版號與發版規範
本規範定義了本專案(販賣機機台 App)的版號命名、自動化計算、實體機台 OTA 更新原則,以確保後續開發與發版時版本管理高度穩定。
1. 雙版號動態計算機制 (Double Versioning Scheme)
本專案採用三段式版號變數進行自動化計算,所有配置皆於 app/build.gradle 頂部定義。
Important
開發人員與 AI 助手在修改版號時,嚴禁直接寫死
versionCode或versionName,必須透過修改 Gradle 頂部的變數來進行。
verMajor(大版號):代表重大架構變更或大型系統改版(例如10)。verMinor(次版號):代表新增商業功能、硬體支援,但向下相容(例如8)。verPatch(修補版號):代表 Bug 修復、小優化(例如5)。
計算公式:
versionCode=verMajor * 10000 + verMinor * 100 + verPatchversionName="${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版本]_[主板與機型規格] - 現行標準 Flavor:
S_12_XY_U_Standard_S:代表 Small 尺寸螢幕(一般 S 號)。12:代表針對 Android 12 系統優化之版本。XY_U_Standard_:代表 XY 主板、U 規格標準版。
- 擴充原則:未來引進新硬體時,必須新增 Flavor 並遵循此命名格式(例如:
M_12_XY_U_Standard_)。
4. Git 發版配合流程
- 自
develop拉出release/10.8.5發版分支。 - 遞增
app/build.gradle中的verPatch變數並 Commit。 - 測試無誤後,合併回
main與develop。 - 必須在
main合併節點打上 Git Tag,格式為v[Major].[Minor].[Patch](例如v10.8.5),以便日後追溯特定現場機台的版本程式碼。