Flutter完整開發實戰詳解(十9、 Android 和 iOS 打包提交審覈指南)

做爲系列文章的第十九篇,本篇將科普 Android 和 iOS 平臺的打包和提交審覈流程。html

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

文章彙總地址:

Flutter 完整實戰實戰系列文章專欄android

Flutter 番外的世界系列文章專欄ios

1、Android 打包和審覈流程

一、打包

事實上 Androd 的打包和審覈流程都相對簡單,打包 apk 只須要經過以下命令行就能夠完成:git

flutter build apk --target-platform android-arm64

flutter build apk --target-platform android-arm64 -t lib/main_prod.dart
複製代碼
  • 其中 --target-platform 是針對打包後的 so 文件, 對須要支持的框架進行選擇,由於如今不管是 Goole Play 或者國內平臺,都多都有要求應用須要支持 arm64-v8a 的 ABI 架構,因此通常打包也會選擇指定 target-platform 來減少 apk 的體積。github

  • -t 表示指定其餘 main.dart 打包,也能夠不指定。bash

  • 另外須要注意,Android 上須要在 android/app/src/build.gradle 下配置 signingConfigs 來指定打包密鑰等信息,具體生成密鑰這裏就不詳說,以後把 signingConfigs 配置到 buildTypes 就完成配置。服務器

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 默認會在以下圖所示路徑架構

二、提交審覈

其實在 Android 上提交審覈是比較簡單的,由於 Android 只須要提供 Apk 下載連接就能夠直接安裝,因此不少廠家都在有本身服務器上直接放上 Apk 文件,可是爲了更好的體驗和分發,大多數狀況下也會選上傳到各大應用平臺,好比華爲上沒有上架的話,會出現以下圖所示問題。

甚至有些 Apk 由於沒有上架,會由於 app_name 等緣由被看成病毒提醒。

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

  • targetSdkVersion 28 (9.0);
  • ABI 須要支持 arm64-v8a
  • 應用須要針對 AndroidQ(10.0)進行適配,好比文件讀取權限變動;
  • 教育類應用須要備案
  • 須要提供用戶隱私協議和權限說明;

以後就是一些平臺的獨立審覈問題,好比 360 平臺審覈要求你的 Apk 須要通過它們的應用加固(加固後的做用就見仁見智),而且很多平臺如應用寶要求提供應用的版權說明等文件,這些都是比較磨人的東西。

固然有些平臺你能夠不上,可是好比不上應用寶,你就很難得到微信掃一掃後跳轉打開應用和下載的能力

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

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

2、iOS 打包和審覈流程

一、打包

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

1.1 建立 App Store Connect

經過登陸 developer.apple.com 網站,在 AccountCertificates,IDs & Profiles 能夠找到你應用的信息,同時在 App Store Connect 欄目能夠前往 appstoreconnect.apple.com

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

  • 一、以下圖所示在 App Store 的 App 信息裏有一個隱私政策網站輸入欄,這個是必填的,通常就是放一個 Html,具體能夠參考相似的: guoshuyu.cn/home/index/…

  • 二、須要上傳應用的截圖,通常須要準備 3-5 張預覽圖,可是這裏須要 6.5 寸和 5.5 寸兩種,若是還須要支持 iPad 版本那就還須要上傳 12.9 的 iPad 圖。這裏推薦下,若是沒有設計師出稿件,推薦使用模擬器進行截圖(注意不要截入 DEBUG 的 Label), 6.5 寸能夠用 iPhone 11promax 模擬器,5.5 寸的用 8plus 模擬器,打開具體頁面後,按下 command + s 能夠保存到桌面

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

  • 三、在版本的信息裏還有技術支持網站的必填,這個具體能夠參考 :guoshuyu.cn/home/index/… ,若是此處不符合條件也會出現審覈不經過的問題。

  • 四、另外若是 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,而後選擇自動簽名,等簽名成功後最後點擊上傳就能夠了。

二、審覈

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

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

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

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

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

以後在版本信息裏選擇須要提交的構建版本,以後提交審覈便可,通常審覈會從等到審覈 > 正在審覈 > 審覈結果,這個過程通常在 24 或者 48 小時以內,可是若是遇上了像聖誕節這樣的節日,蘋果會由於放假放慢審覈,另外被拒絕的太屢次的話,也會影響審覈速度。

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

  • 前面說過的應用截圖要儘可能體現應用的主要內容;
  • 不容許在應用內濫用應用更新提示,好比不容許應用本身跳轉下載更新,只能是簡單提示後跳轉 app store ,若是把握很差尺度乾脆在 iOS 上就不加;
  • 不要在應用內帶有 fir.im ,蒲公英等資源、連接、文本和SDK,否則很容易被掃描而後拒絕。

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

iOS 還有能夠不用上架,只須要用戶在手機上信任證書的可使用 ipa 的開發者帳號,可是這類開發者帳號如今很難申請獲得,而且這類帳號的應用須要一年後從新打包一次更新。

資源推薦

相關文章
相關標籤/搜索