第一次把 Android App 上架 Google Play,光是搞懂 Play Console 的各種設定就要花不少時間。這篇文章把從帳號註冊到成功上架的每個步驟都整理出來,搭配實際操作截圖,讓你照著做就能完成。
本文以 Flutter 專案為例,但簽章、商店資訊、內容聲明等步驟適用於所有 Android App。
先看 1 分半影片版含旁白,第一次送審的 6 個步驟
前置:註冊 Google Play Console
Google Play Console 是管理 Android App 上架的後台。如果你還沒有帳號,需要先完成註冊。
Step 1:開啟 Play Console 並登入
前往 play.google.com/console,用你的 Google 帳號登入。建議使用公司專用的 Google 帳號,不要用私人帳號。
部分自訂網域的信箱可能收不到 Google 的驗證信,建議改用 Gmail 註冊。
Step 2:選擇帳戶類型
Google 會問你要建立「個人」還是「機構」帳戶。如果你是公司或團隊,選「機構」(Organization)。機構帳戶需要 D-U-N-S 編號和官網驗證,但上架的 App 會顯示公司名稱,比較正式。
機構帳戶的驗證流程另見「DUNS 驗證申請指南」。
Step 3:填寫開發者資料
填寫開發者名稱、email、電話、地址。紅色星號是必填欄位。這些資訊會出現在商店頁面,請填寫正式的公司資訊。
Step 4:繳費 USD $25
Google 收取一次性的 25 美元註冊費,用信用卡付款。付款後不會立刻通過——機構帳戶還需要完成 D-U-N-S 和官網驗證。
Step 5:完成驗證
機構帳戶需要通過 Google 的身分驗證。驗證通過後,Play Console 首頁會顯示「所有應用程式」,這時就可以開始建立 App 了。

帳戶只要註冊一次。之後每支新 App 直接從「建立應用程式」開始,不用再繳費或驗證。
§0 命名前先查同名
在寫任何程式碼之前,先確認 App 名稱沒有衝突。Apple 的審查指南 4.1 明確規定:名稱不得與現有 App 過於相似。
- 在 App Store 搜尋:itunes.apple.com/search?term=名稱&country=tw&entity=software
- 在 Google Play 搜尋:play.google.com/store/search?q=名稱&c=apps
- 在台灣商標局 TIPO 查詢:cloud.tipo.gov.tw/S282/
- 把識別元素拆開查(例如名稱是「AI 筆記王」,要另外查「筆記王」)
§1 建立 Play Console App 記錄
- Play Console → 「建立應用程式」
- 填 App 名稱(之後可改)、選語言、選「應用程式」(不是遊戲)
- 套件名稱(Package name)非常重要:上架後不能改,且必須和 AAB 裡的 applicationId 完全一致
- 勾選聲明 → 建立
§2 Release 簽章設定
Android App 必須用簽章金鑰簽名才能上架。這組金鑰要妥善保管——遺失就無法更新 App。
產生 Keystore
用 keytool 產生 PKCS12 格式的 keystore:
keytool -genkeypair -v -storetype PKCS12 -keystore upload.p12 -alias upload -keyalg RSA -keysize 2048 -validity 10000
PKCS12 的 store 密碼和 key 密碼必須一致,否則 Gradle 建置會報錯。
設定 Gradle
在專案根目錄建 key.properties,寫入 keystore 路徑和密碼。然後在 android/app/build.gradle 裡讀取這個檔案來簽名。記得把 key.properties 加入 .gitignore。
驗證簽章
建置 release 版後,用 jarsigner -verify 確認不是 debug 簽章。如果看到 CN=Android Debug,表示還是 debug 版,要重新檢查 Gradle 設定。
§3 Play App Signing 與指紋登錄
Google 會用自己的金鑰重新簽署你上傳的 AAB。所以有兩組指紋:你的 Upload Key 和 Google 的 Play Signing Key。
兩組指紋都要登錄到你使用的服務(Firebase、OAuth、LINE SDK 等),否則 release 版會登入失敗、推播收不到。這是最容易遺漏的步驟。
- Play Console → 設定 → App Signing,複製兩組 SHA-1 和 SHA-256
- 到 Firebase Console → 專案設定 → 新增指紋
- 到 Google Cloud Console → OAuth 用戶端 → 新增兩組指紋
- 到 LINE Developer Console → 新增兩組指紋
- 用 release 版實際測試 Google 登入、LINE 登入、FCM 推播
§4 服務帳戶授權
如果你需要用 API 自動化管理 App(例如自動上傳 AAB),需要設定服務帳戶。
- Google Cloud Console → IAM → 服務帳戶 → 建立
- Play Console → 設定 → API 存取權 → 連結 GCP 專案
- 新增服務帳戶並授權
- 重要:授權最後一步會問「是否授予存取權?」→ 一定要按「是」
GCP 專案一開始就啟用 Play Developer Reporting API(playdeveloperreporting.googleapis.com),之後查評論和統計會用到。
§5 內部測試
第一版 App 先上內部測試軌道。內部測試不需要 Google 審查,上傳後立刻可用,最多 100 位測試員。

新 App 的 releaseNotes 先傳空字串:商店資訊還沒建語系,帶 notes 會被擋。
§6 商店資訊
商店資訊就是使用者在 Google Play 看到的 App 頁面。每個語系都要分別填寫。
- 標題(title):最多 30 字
- 簡短說明(short description):最多 80 字
- 完整說明(full description):最多 4000 字
- App 圖示:512×512 PNG
- 主打圖(Feature graphic):1024×500
- 手機截圖:至少 2 張

隱私權政策 URL 是必填的。內容必須涵蓋 App 實際使用的權限和資料收集範圍。部署後用 curl 確認 URL 回 200 再填。
§7 App 內容聲明(10 項)
Play Console 的「應用程式內容」有 10 個聲明要填。這些聲明有依賴順序,順序不對會看到空白頁。
建議順序:廣告 + 登入詳細資料 → 目標對象 → 資料安全性 → 其他
- 廣告聲明:App 有無廣告
- 廣告 ID 聲明:檢查 merged manifest 有無 AD_ID
- 登入詳細資料:提供審查帳號和英文操作說明
- 目標對象和內容:選 18+
- 資料安全性:建議用 CSV 匯入,可跨 App 共用模板
- 內容分級 IARC:填完問卷後摘要頁要按儲存
- 金融功能聲明
- 政府應用程式聲明
- 健康應用程式聲明
- 全螢幕意圖:有 USE_FULL_SCREEN_INTENT 權限才要填




「已完成」只代表有作答,不代表答得對。每一項都要點開「編輯」逐題核對。
填登入詳細資料前,先實測那組帳密真的登得進正式站。審查帳號若裝置數已滿會登不進去。
§8 類別與國家地區
選擇適當的 App 類別,需選至少 1 個標記。
國家地區全選後取消中國大陸,最終約 176 個國家。簡體中文語系仍保留,供新加坡、馬來西亞等地使用者使用。
§9 首次送審
確認設定任務全部完成(發布總覽無缺項)後就可以送審。
Play Console 有四種發布軌道:
- 內部測試:Email 名單(上限 100 人),不需審查
- 封閉測試:指定名單,需審查
- 公開測試:任何人可加入(標 beta),需審查
- 正式版:所有人,需審查
送審步驟
- 在目標軌道建立新版本
- 選擇國家地區、設定測試人員
- 編輯版本 → 下一步 → 確認「已可發布」→ 儲存
- 發布總覽 → 「送審 N 項變更」→「將變更送審」

標題變成「審查中的變更」就表示送審成功了。
審查中再送新版會取消並重排整個審查。首次上架期間新版先只上內部測試。
§10 發新版流程
App 上架後,每次更新版本的流程:
- 調高 pubspec.yaml 的版號
- flutter build appbundle --release 產出 AAB
- 上傳到目標軌道(建議先上封閉測試)
- 自己用 release 版實走一輪驗證
- 沒問題後推正式版
- 確認商店可下載新版後才開啟強制更新
§11 強制更新機制
每支 App 都要內建版本檢查。啟動時和回到前景時呼叫版本 API,如果低於最低版本就彈出不可關閉的對話框,引導使用者去商店更新。
尚未上架的平台不要開強制更新。上架後確認商店真的能下載新版,兩個平台各打一次版本 API 驗證後才打開。
§12 評分彈窗
使用官方 In-App Review API(Flutter 用 in_app_review 套件)。在使用者完成一次有價值的動作後觸發,不在首次開啟或錯誤時跳出。
- 同一版本最多觸發一次
- 兩次觸發間隔至少 30 天
- 禁止自製星等畫面或「給五星送獎勵」
- 禁止先問滿不滿意再只把滿意的人導去評分
§13 多語系與 ASO
App 介面做多語系(i18n),字串走字典檔,不寫死在畫面。RTL 語系(阿拉伯文、波斯文、希伯來文、烏爾都文)版面用 start/end。
ASO(App Store Optimization):各語系分別填寫名稱、副標、關鍵字、說明。截圖文字也要在地化。隱私權和支援網址指向官網。
§14 建置環境注意事項
- Android 只能在 x86 電腦建置(PC 或 Mac),ARM 架構的雲端主機無法編譯
- 建議有一支 Android 實體手機用來測試
- release 版才會跑 R8(程式碼壓縮),debug 版不會 — 閃退可能只在 release 版出現
- 大字體測試:adb shell settings put system font_scale 1.2,走過所有主要頁面確認版面不會溢出
- 每批功能都在模擬器或真機實走並截圖,單元測試全綠不算結案
常見問題
套件名衝突
Package name 上架後不能改。如果和別人衝突,只能建新的 App 記錄。建議用反向網域命名(如 studio.autoit.appname)。
指紋漏登錄
Google 登入回 DEVELOPER_ERROR、LINE 回 channel not found — 最常見的原因就是 Play Signing Key 的指紋沒有登錄到對應的服務。記得 Upload Key 和 Play Signing Key 兩組都要登。
審查帳號登不進去
Google 審查人員用你提供的帳號登入 App 來測試。如果那組帳號有裝置數量限制(例如同時最多 5 台),而你自己的測試裝置已經佔滿,審查人員就會登不進去 → 直接退件。
內容分級沒儲存
IARC 問卷的最後一頁(摘要頁)有一個「儲存」按鈕,很容易漏按。沒按的話分級不會生效,送審會被擋。
App 圖示顯示 Flutter 預設圖
記得替換 android/app/src/main/res/ 底下的 launcher icon。通知小圖示也要一起換。
送審前檢查清單
每次送審前逐項確認:
- App 名稱已查同名,無衝突
- 使用機構帳戶
- 套件名與 AAB 的 applicationId 一致
- 使用 release 簽章(非 debug)
- Keystore 與密碼已安全保管
- Upload Key 和 Play Signing Key 指紋都已登錄到 Firebase、OAuth、LINE 等服務
- 用 release 版實測登入、推播正常
- 商店資訊各語系已填(標題、說明、截圖)
- 隱私權政策 URL 已上線且回 200
- App 內容聲明 10 項全部完成
- 國家地區已設定(取消中國大陸)
- 強制更新機制已內建
- 評分彈窗已內建
- 版號已調高
- 在實機或模擬器用 release 版實走過一輪
以上就是 Android App 上架 Google Play 的完整流程。第一次上架最花時間的是帳號驗證和內容聲明,之後發新版就快多了。祝上架順利!