Android & Capacitor
概述
StrawMoneyBook 以 Capacitor 8 包裝 Vue SPA 為 Android App,並透過原生 plugin 整合 Google Identity、SQLite SQLCipher、桌面小工具、Wear OS companion、安全鎖與銀行自動化等能力。
Capacitor 架構
mermaid
flowchart TB
WebLayer[Vue WebView]
CapPlugins[Capacitor Plugins]
Native[Android Java/Kotlin]
Wear[:wear Compose Module]
WebLayer --> CapPlugins
CapPlugins --> Native
Native --> Wear本機資料(Android)
- SQLCipher 加密:
straw_money_bookSQLite.db - 初始化:Capacitor SQLite plugin +
bootstrap.service.js - plugin-null 時只重試 primary DB,禁止切空 recovery DB(smb298)
原生 Plugin(節錄)
| Plugin / 類別 | 用途 |
|---|---|
GoogleIdentityPlugin.java | Google 登入、server auth code |
MainActivity.java | OAuth result 轉送 |
| HomeWidget plugin | 5 種桌面小工具 |
| Local Notifications | 記帳提醒 |
桌面小工具
| Provider | 用途 | 點擊導向 |
|---|---|---|
StrawMoneyWidgetProvider | 月收支總覽 | /analysis |
StrawMoneyPieChartWidgetProvider | 圓餅圖 | /analysis |
StrawMoneyBarChartWidgetProvider | 長條圖 | /analysis |
StrawMoneyQuickAddWidgetProvider | 快速記帳 | /transactions/quick-add |
StrawMoneyAiBookkeepingWidgetProvider | AI 記帳 | /ai-auto-bookkeeping |
資料由 home-widget.service.js 寫入 SharedPreferences,原生繪製 Bitmap。
Wear OS Companion
- 獨立
:wearCompose 模組 + Tile - MessageClient
/smb/v1/*nearby-first,寫入同一 SQLCipher DB(不經 WebView) - Room outbox v2;Wear Compose 1.6.2(禁 1.4.x + targetSdk≥35 閃退)
- Play 測試 / 正式分軌上傳(phone + wear 各一 AAB);預設測試軌道 internal(未拍板不改
play-testing-channel.json) - 長表單 route 使用
meta.hideAppChrome(quick-add、報表列印等),BottomNav 不遮 CTA
詳見 Wear Companion、Playwright App Shell。
安全與 UX
| 能力 | Service |
|---|---|
| 生物辨識鎖 | security-lock.service.js |
| Android 返回鍵 | app-runtime.service.js |
| 語音輸入 | AI 記帳整合 Capacitor speech |
| 主題 / modern UI | theme.service.js、apple-ui.css |
Web 測試版
Production web SPA:https://www.strawmb.com/app/(hash router,VITE_WEB_HASH_ROUTER=true),連 api.strawmb.com。本機 npm run dev 亦預設連營運 API。
與其他域
- Authentication — Google Identity、server auth code
- Bank Sync — 原生銀行自動化
- Bookkeeping — Wear 記帳寫入同一 DB