Flutter 實戰:Android 和 iOS 打包提交審覈指南

本篇將科普 Android 和 iOS 平臺的打包和提交審覈流程。

因爲很多 Flutter 開發人員可能只有單端的開發經驗,對於另外一端的打包和提審流程不熟悉,或者是前端人員沒有提交審覈的經驗,所以本篇將科普這一流程,讓大家少走彎路。

一、Android 打包和審覈流程


1、打包

事實上 Androd 的打包和審覈流程都相對簡單,打包 apk 只需要通過如下命令行就可以完成:

flutter build apk --target-platform android-arm64

flutter build apk --target-platform android-arm64 -t lib/main\_prod.dart
android {
    ····
    signingConfigs {
        config {
            keyAlias "xxxx"
            keyPassword "xxxx"
            storeFile file("../keystores/xxxxx.jks")
            storePassword "xxxx"
        }
    }

最後需要注意,如果你的 Apk 存在其他類型架構的 so 目錄,比如 armeabi-v7a 等,那就需要在 android/app/src/build.gradleandroid { buildTypes { 下加上 ndk abiFilters 進行過濾配置,因爲 Android 下需要保證每個 ABI 目錄內的 so 文件是完整齊全的,不然可能出現崩潰。

  buildTypes {
        release {
            signingConfig signingConfigs.config
            ndk {
                //設置支持的SO庫架構
                abiFilters 'arm64-v8a'
            }
        }
        debug {
            signingConfig signingConfigs.config
            ndk {
                //設置支持的SO庫架構
                abiFilters 'arm64-v8a''x86''x86\_64'
            }
        }
    }

最後打包完的 Apk 默認會在如下圖所示路徑

2、提交審覈

其實在 Android 上提交審覈是比較簡單的,因爲 Android 只需要提供 Apk 下載鏈接就可以直接安裝,所以很多廠家都在有自己服務器上直接放上 Apk 文件,但是爲了更好的體驗和分發,大多數情況下也會選上傳到各大應用平臺,比如華爲上沒有上架的話,會出現如下圖所示問題。

甚至有些 Apk 因爲沒有上架,會因爲 app_name 等原因被當作病毒提醒。

事實上國內的應用市場審覈並不麻煩,只是因爲平臺多且各家條件可能不一樣變得比較繁瑣,目前主流要求的有:

之後就是一些平臺的獨立審覈問題,比如 360 平臺審覈要求你的 Apk 需要經過它們的應用加固(加固後的作用就見仁見智),並且不少平臺如應用寶要求提供應用的版權說明等文件,這些都是比較磨人的東西。

當然有些平臺你可以不上,但是比如不上應用寶,你就很難獲得_微信掃一掃後跳轉打開應用和下載的能力_。

另外比如華爲平臺會有:根據工信部關於開展 APP 侵害用戶權益專項整治工作的通知要求,應用內還需要提供帳號註銷服務或銷戶功能能力。

可以看出 Android 的審覈和條件其實並不繁瑣,只是有些平臺需要的東西比較磨人,具體需要上架可以根據需求自行斟酌了。

二、iOS 打包和審覈流程

1、打包

iOS 的打包和審覈流程相對複雜點,打包 iOS 首先你需要有_開發者賬號、給應用申請和設置有 Bundle Identifier 、配置文件、證書等信息_,相信已經到打包階段了,這系列文件你不會欠缺吧?

1.1 創建 App Store Connect

通過登錄 developer.apple.com 網站,在 AccountCertificates,IDs & Profiles 可以找到你應用的信息,同時在 App Store Connect 欄目可以前往 appstoreconnect.apple.com 。

接着在 我的 App 按照提示創建應用,填寫信息根據業務要求填寫即可,這裏主要說幾個需要關注的點。

這裏需要注意,截圖的畫面不要太簡單,最好能替體現應用的具體內容,不然很容易被拒絕,這裏同時提供需要尺寸對應的設備型號。

1.2 打包上傳

打包 flutter iOS 首先需要執行 flutter build ios 命令,命令會生成 release 模式的下的 framework 文件,之後就可以進入 Xcode 流程。

如下圖所示,首先確保🔨位置不要選中模擬器,之後在 Product > Archive 就會開始導出打包。

打包成功後可以看到如下界面,找到你最新打包的那一項,選擇 Distribute App 就可以進入下一步;另外打包過的項目在 Window > Organizer 也可以重新找到。

之後如下所示,就選擇上傳 App Store Connect 進行提交準備。

如果是選擇導出測試 ipa 可以選擇 Development,前提是對應機器的 UDID 等信息已經在打包配置文件內。

之後可以選擇 Upload 或者 Export,Export 就是導出後再在本地上傳,可以使用 TransPorter 工具再單獨上傳;Upload 就是前面之後直接上傳。

接着出現的這個頁面建議是不要勾選(不要問,問就是百度),然後直接 next,然後選擇自動簽名,等簽名成功後最後點擊上傳就可以了。

2、審覈

上傳成功後就,過一段時間可以在活動TestFlight 看到你提交的構建版本,然後你可能會收到如下所示的一封郵件:

其中比如 ITMS-90683 說的是沒有在 plist 內配置 NSContactsUsageDescription 的 key-value,也就是向用戶解釋你爲什麼需要用到讀取用戶聯繫人的權限。

諸如此類的還有後幾個都是,如果你應用內用到了對應的權限。就需要在 plist 配置上對應的 key-value

另外就是 Push Notification Entitlement 的警告,是說你的應用沒有配置推送相關的證書和設置,如果你的應用沒有用到對應的功能,比如在 Developer 後臺看如下圖所示的推送是否勾選了,如果勾選了就需要在應用內配置對應的推送服務,iOS 上 APNS 還需要設置對應的推送證書,一般推送證書還會分開發和生產兩種,如果沒有使用推送可以忽略警告。

還有就是 App 的啓動頁和 logo 尺寸記得配全,配置不全也會收到對應的警告,這個可能會影響審覈。

之後在版本信息裏選擇需要提交的構建版本,之後提交審覈即可,一般審覈會從等到_審覈 > 正在審覈 > 審覈結果_,這個過程一般在 24 或者 48 小時之內,但是如果趕上了像聖誕節這樣的節日,蘋果會因爲放假放慢審覈,另外被拒絕的太多次的話,也會影響審覈速度。

如下圖所示,最後提一些審覈建議,比如:

以上這些都是屬於常犯的問題,更多的還請看 :developer.apple.com/cn/app-stor…

iOS 還有可以不用上架,只需要用戶在手機上信任證書的可以使用 ipa 的開發者賬號,但是這類開發者賬號現在很難申請得到,並且這類賬號的應用需要一年後重新打包一次更新。

資源推薦

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。