iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0
生成式 AI

VIBE CODING 全紀錄:0 經驗用 AI 打造 PWA 兒童任務管理平台》系列 第 20

(Day 20)AI 幫我上架 Google Play:從 PWA 到 TWA 的實驗(上集)

  • 分享至 

  • xImage
  •  

從開發初期到現在,我的兒童任務管理平台一直以 PWA(Progressive Web App) 的形式存在。
PWA 的好處很明顯:只要一個網址,就能在大多數裝置上直接使用,甚至還能加到主畫面、支援離線快取,體驗上接近原生 App 。對於一個獨立開發的小專案來說,這樣的做法既省時又省力。

不過為了增加曝光度,也想試著上架 Google Play,我在開發之初已經問過 AI,PWA 是可以打包成 Android App 並上架的;另一方面,對於使用者來說,「商店下載」也比「加到桌面」更有信任感。

於是,我再次求助於 AI,詢問:PWA 打包成 Android App,上架到 Google Play 有那些方案?


AI 提供的方案比較

AI 給了我幾個可行的方向,因為先前遇到過 webview 使用 Google 登入問題,我特別請 AI 針對 Google 登入 的相容性做了分析:

方案 Google 登入可行性 實作方式
TWA(Trusted Web Activity) ✅ 完全可用 直接在 PWA 使用 Google Sign-In,就像網頁一樣
Cordova / Capacitor ✅ 可用 需要原生 plugin(Google Sign-In SDK)
Flutter + WebView ✅ 可用 建議用原生 plugin,不要在 WebView 裡跑 OAuth
單純 WebView 包裝 ⚠️ 不建議 Google 禁止隱藏式 WebView OAuth,審核容易失敗

看完這個比較表,我決定先選擇 TWA。理由有三個:

  • Google 官方推薦 : 本質上就是用 Chrome 打開網站,安全又正規。
  • 登入支援完整 : Google Sign-In 可以完全沿用,不需要額外 plugin。
  • 更新機制簡單 : 上架後,如果網站(PWA)有更新,使用者端會自動同步,不必重新發版。

這個「保持網站更新即等於 App 更新」的特性,對個人開發者來說很有吸引力,不需要每次修改還要到多個地方上架或部署。於是,我就決定開工了。


AI 開始幫我包裝 TWA

我沒有寫過原生 Android,但 AI 給了很大的幫助。它直接在我的專案目錄下生成了一個 android-twa 資料夾,裡面就是完整的 Android 專案架構。只要照著指令,就能一步步產生出 APK / AAB 檔案。

在這過程中,我也學到了一些基本技巧:

  • 如何直接連接手機運行與 Debug
    AI 幫我寫了一個 .bat 腳本,只要手機開啟「USB 偵錯模式」,執行 bat 就能把 App 安裝到手機上並運行。
  • 透過 Chrome 瀏覽器看 Log
    開發者模式下,可以用 chrome://inspect 直接查看 TWA 的 console log,方便除錯。

這個流程讓我感覺自己像是「被 AI 帶著做 Android 開發」,過程雖然陌生,但在 AI 帶領下,進展還是非常快。


第一個大問題:App 一直跳去 Chrome

不過,當我第一次把 App 安裝到手機時,卻發現一個致命問題:

打開 App 以後,竟然直接跳轉到 Chrome 瀏覽器,根本沒有全螢幕體驗!

這時候 AI 提醒我,關鍵在於 Digital Asset Links(數位資產連結)

簡單來說,Google 需要一個「證明」:這個網站確實是我擁有的,而不是某個惡意網站隨便打包成 App。
做法是:

  1. 在網站上放置一個 .well-known/assetlinks.json 檔案。
  2. 裡面包含 App 的簽章資訊(SHA-256 指紋)與套件名稱。
  3. 這樣一來,TWA 容器就能信任並「全螢幕」顯示 PWA,而不是開啟瀏覽器。
[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.taskyventure.app",
      "sha256_cert_fingerprints": [
        "12:34:56:78:90:AB:CD:EF:..."
      ]
    }
  }
]

我在網站加上這個檔案後,並等候一段時間,問題好不容易才解決。重新安裝 App 之後,它不再跳出 Chrome,而是以原生 App 的方式全螢幕執行。

Google 的快取需要一段時間才會過期並重新抓取最新的版本。這個時間沒有一個固定的數字,但根據開發者的經驗,通常需要幾個小時,甚至可能長達 24 小時。

不過使用上仍有一些體驗上的問題,像是啟動時仍會有短暫的網頁跳轉過程,以及會跳出正在 Chrome 中運行的提示,雖不影響主功能,但總是有一種不完善的感覺。在與 AI 多次討論後仍解決不了(或許是 TWA 的限制?),我暫時放棄了,先繼續進行下個階段。

除此之外還有一個有趣的問題:

TWA 有啟動動畫,PWA 也有啟動動畫,導致要看兩次不同的啟動動畫才能開啟...

https://ithelp.ithome.com.tw/upload/images/20250821/20177927fQPXQILT5d.jpg


從實驗到上架:挑戰才正要開始

透過 AI 的協助,我這個完全不懂 Android 的開發者,也成功把 PWA 打包成能夠上架到 Google Play 的 App。

回顧整個過程,我覺得最重要的心得有:

  • TWA 是 PWA 上架 Google Play 的官方推薦方案 —— 特別適合需要 Google 登入的應用,同時還能保留 PWA「隨網站更新即同步」的便利。
  • 數位資產連結(Digital Asset Links)必不可少 —— 沒設置時 App 只會跳去 Chrome,設置後才能展現完整的全螢幕 App 體驗。

不過,目前我還有一個問題尚未解決:啟動時會短暫出現網頁跳轉的畫面,並且系統還會顯示「正在 Chrome 中運行」的提示訊息。雖然不影響主要功能,但多少會讓體驗打了點折扣。

即便如此,TWA 還是有很明顯的優勢:

  • 打包後檔案非常小(我打包後僅有 5MB)
  • 更新方便,不需要持續上架新版

接下來就要準備上架 Google Play 了。

敬請期待下一篇《AI 幫我上架 Google Play:從 PWA 到 TWA 的實驗(下集)》


上一篇
(Day 19)讓平台更完整:AI 打造專業入口網站 (下集)
下一篇
(Day 21)AI 幫我上架 Google Play:從 PWA 到 TWA 的實驗(下集)
系列文
VIBE CODING 全紀錄:0 經驗用 AI 打造 PWA 兒童任務管理平台》30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言