官方文檔
官方中文文檔鏈接:https://flutter.cn/docs/deployment/ios
官方文檔中步驟描述并不清晰,同時在操作過程中會遇到一些bug瓮恭,在這里記錄一下。
操作流程
預(yù)先準(zhǔn)備
應(yīng)用圖標(biāo)
IOS要求應(yīng)用圖標(biāo)為一個1024*1024像素大小的PNG圖片屯蹦,不能包含Alpha通道和透明度赶么。
準(zhǔn)備好圖標(biāo)圖片后,放在項目assets任意位置帖渠,然后使用 flutter_launcher_icons 包來自動生成項目中需要的圖標(biāo),它會同時生成Android和IOS需要的圖標(biāo)文件空郊。
在pubspec.yaml
中配置依賴包,和原始圖標(biāo)路徑:
dev_dependencies:
flutter_launcher_icons: "^0.7.3"
flutter_icons:
android: "launcher_icon"
ios: true
image_path: "assets/icon/icon.png"
安裝依賴并運行命令生成圖標(biāo):
flutter pub get
flutter pub run flutter_launcher_icons:main
開發(fā)者賬號注冊
需要注冊 Apple Developer Program锁摔,選擇任意類型的開發(fā)者哼审,最低標(biāo)準(zhǔn)的個人開發(fā)者需要¥688每年。
可以通過 App Store Connect App注冊涩盾,該App中可以直接購買開發(fā)者計劃并付費。
注冊App
根據(jù)官方文檔春霍,首先要登記套裝 ID,該ID應(yīng)該在真機測試的階段在Xcode中就配置好了芹枷,所以此處略過莲趣。
然后登陸網(wǎng)頁版的 App Store Connect ,新建App喧伞,并填寫基本信息。
檢查 Xcode 項目設(shè)置
根據(jù)官方文檔中的檢查列表檢查設(shè)置绿聘,但是注意:
- Runner > General > Identity > Display Name 內(nèi)容不能修改次舌,需要保持為
Runner
。如果修改了會導(dǎo)致運行flutter build ios
找不到runner報錯彼念。修改app名稱應(yīng)該在Info.plist中修改CFBundleName
。 - Runner > General > Frameworks 中App.framework逐沙、Flutter.framework和Pods_Runner.framework的Embed狀態(tài)都應(yīng)該為Embed & Sign。
創(chuàng)建一個構(gòu)建歸檔(build archive)
根據(jù)官方文檔操作棚赔,另外還需注意:
- 我當(dāng)前使用的
Flutter 1.12.13
+IOS 13.3.1
+Xcode 11
在進(jìn)行 Product > Archive 創(chuàng)建歸檔的時候報錯徘郭,此時需要將Pods_Runner.framework
的狀態(tài)修改為Do Not Embed
,然后進(jìn)行歸檔(當(dāng)然在flutter build ios
的時候還要改回Embed & Sign
)残揉。 - 項目中使用了 flutter_local_notifications 包來進(jìn)行本地通知推送,而該包依賴另一個 permission_handler 包來進(jìn)行權(quán)限獲取壳快,它默認(rèn)是獲取全部權(quán)限的镇草,而有些權(quán)限在項目中并沒有用到,所以還需要根據(jù)其文檔在
Podfile
中進(jìn)行權(quán)限配置梯啤。確實用的的權(quán)限需要在`Info.plist中添加對應(yīng)的權(quán)限使用說明。 - IOS要求添加
Push Notifications
的權(quán)限配置黔夭,即使項目僅使用了Local Notification,在 Runner > Signing & Capabilities 中點擊+ Capability
并添加Push Notifications
本姥,這樣在build的時候Xcode就會生成entitlement file杭棵。如果沒有自動生成的話,可以手動添加到Runner目錄中魂爪,文件名為Runner.entitlement
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
</dict>
</plist>
發(fā)布到TestFlight
發(fā)布成功滓侍,邀請內(nèi)部測試人員測試蒋川。