深色模式
Flutter一键打包iOS
目标
在Flutter项目打包iOS时,通过命令行,一键打包,而不必在XCode中点来点去。
并且要能打Ad Hoc包、App Store包。
思路
打包iOS的命令是flutter build ipa
,并且可以通过--export-options-plist
选项指定Provisioning Profile,此选项的值是打包配置的plist文件(默认文件名是ExportOptions.plist
)的路径。
所以,先创建好ExportOptions.plist
文件,就可以通过flutter build ipa
命令,一键生成Ad Hoc包、App Store包。
创建ExportOptions.plist
打包配置文件ExportOptions.plist
,可以在XCode中进行一次打包,并选择导出,即可得到ExportOptions.plist
文件。
(在XCode中打包的前提,是配置好相关的Certificate(证书)、Provisioning Profile(描述文件),这里不展开说明。)
在XCode中:
- 打一个Ad Hoc包,并导出,即得到Ad Hoc模式的
ExportOptions.plist
- 打一个App Store包,并导出,即得到App Store模式的
ExportOptions.plist
具体步骤:
- 配置签名 XCode -> Runner -> Signing Capabilities -> 配置为Ad Hoc模式或是App Store模式
- 打包并导出 Product -> Archive -> Distribute App -> Custom -> Ad Hoc或App Store Connect -> Next ...
- 找到
ExportOptions.plist
在导出的目录中,就有ExportOptions.plist
文件,将其复制到Flutter项目根目录/ios
中(建议改文件名),供flutter build ipa
命令使用。
如上操作2次,可以分别得到Ad Hoc模式与App Store模式的ExportOptions.plist
文件,可以将其改名为adhoc.plist
、appstore.plist
。
打包iOS
生成ipa
打Ad Hoc包:
sh
flutter build ipa --export-options-plist=ios/adhoc.plist
打App Store包:
sh
flutter build ipa --export-options-plist=ios/appstore.plist
打包会生成.ipa
文件,在build/ios/ipa
目录中。
版本号问题
读取yaml文件中的版本号:
打包的版本号,默认读取pubspec.yaml
中的version
。
比如,version: 1.0.0+2
表示:CFBundleShortVersionString
是1.0.0
,CFBundleVersion
是2
。
对于Android,
version: 1.0.0+2
表示:versionName
是1.0.0
,versionCode
是2
。
在命令中指定版本号:
如果不想读取pubspec.yaml
中的设置,也可以在flutter build ipa
命令中通过--build-name
和--build-number
选项覆盖。
例:
sh
flutter build ipa --build-name 1.0.0 --build-number 3