發布檢查
您正在協助 Flutter 開發者順利發布一個不會被 Google Play 或 App Store 審查拒絕的版本。請務必具體:指出問題所在的檔案名稱以及確切的修改內容。
步驟 1:執行確定性預檢
在 Flutter 專案根目錄執行:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh" $ARGUMENTS
此腳本會分區(版本、變更記錄、靜態分析、測試、除錯遺留物、Android、iOS)印出 OK / WARN / FAIL 行,並在有任何 FAIL 時以狀態碼 1 結束。如果測試執行,可能需要一分鐘。若使用者明顯處於開發中期且只想快速檢視,可傳遞 --skip-tests。
步驟 2:調查每個 FAIL 和 WARN
對於每個項目,請開啟腳本指名的檔案,並在回報前確認發現結果。常見修復:
| 發現結果 | 修復方式 |
|---|---|
| 版本缺少建置編號 | 將 pubspec.yaml 中的 version: 1.2.0 改為 version: 1.2.0+1。 |
| 此版本的標籤已存在 | 執行 bump-version 技能。 |
com.example 的 applicationId 或 bundle id | 使用 flutter pub run change_app_package_name:main com.yourco.app 或編輯 android/app/build.gradle(.kts) 以及 ios/Runner.xcodeproj/project.pbxproj 中的三個 PRODUCT_BUNDLE_IDENTIFIER 項目。 |
| 發布版本使用除錯金鑰簽署 | 新增 key.properties 載入和 release signingConfig;請參閱 references/android-signing.md。 |
key.properties 或 *.jks 被 git 追蹤 | 新增至 .gitignore,然後 git rm --cached <檔案>;如果儲存庫是公開的,請輪換金鑰庫密碼。 |
缺少 PrivacyInfo.xcprivacy | 建立 ios/Runner/PrivacyInfo.xcprivacy;範本請見 references/privacy-manifest.md。 |
debuggable=true、明文流量、localhost URL | 在發布前移除。 |
| 分析器錯誤 / 測試失敗 | 修正它們;不要建議跳過。 |
步驟 3:檢查腳本無法偵測的事項
檢視專案並考量:
- 目標 SDK:Google Play 要求新應用程式和更新鎖定較新的 Android API 等級(Play 的滾動要求大約是前一年的版本)。檢查
android/app/build.gradle(.kts)或 Flutter 預設值中的targetSdk。 - 應用程式圖示和啟動畫面:預設的 Flutter 圖示在審查中會被拒絕,對使用者而言也會立刻解除安裝。檢查
flutter_launcher_icons/flutter_native_splash設定或 mipmap 資料夾。 - 權限:如果 manifest 中有超越 INTERNET 的權限,建議執行
permission-audit技能。 - 商店素材:功能圖 1024x500(Play)、每個必要裝置類別的螢幕截圖、隱私權政策 URL(如果應用程式收集任何資料或要求敏感權限則為必要)。
- 帳號刪除:如果應用程式支援帳號建立,兩個商店都需要應用程式內的帳號刪除路徑。
- 審查者登入:如果有登入畫面,提醒使用者在審查備註中提供測試帳號。
當使用者詢問為什麼被拒絕或想要更深入的審查時,請閱讀 references/store-rejections.md 以取得常見拒絕原因及其修復方式的完整清單。
步驟 4:回報
回傳一份簡短報告:
- 裁決:READY / NOT READY。
- 必須修復(FAIL 項目,每個項目附上檔案和確切修改)。
- 建議修復(對此應用程式重要的 WARN 項目)。
- 後續指令:通常是
flutter build appbundle --release和flutter build ipa --release,如果版本已發布過,則在前面加上bump-version和changelog。
保持精簡。除非使用者要求完整輸出,否則不要重複 OK 行。