Flutter打包并发布 iOS 应用

官方文档

官方中文文档链接:https://flutter.cn/docs/deployment/ios

官方文档中步骤描述并不清晰,同时在操作过程中会遇到一些bug,在这里记录一下。

操作流程

预先准备

应用图标

IOS要求应用图标为一个1024*1024像素大小的PNG图片,不能包含Alpha通道和透明度。
准备好图标图片后,放在项目assets任意位置,然后使用 flutter_launcher_icons 包来自动生成项目中需要的图标,它会同时生成Android和IOS需要的图标文件。
pubspec.yaml中配置依赖包,和原始图标路径:

dev_dependencies: 
  flutter_launcher_icons: "^0.7.3"
  
flutter_icons:
  android: "launcher_icon" 
  ios: true
  image_path: "assets/icon/icon.png"

安装依赖并运行命令生成图标:

flutter pub get
flutter pub run flutter_launcher_icons:main

开发者账号注册

需要注册 Apple Developer Program,选择任意类型的开发者,最低标准的个人开发者需要¥688每年。
可以通过 App Store Connect App注册,该App中可以直接购买开发者计划并付费。

注册App

根据官方文档,首先要登记套装 ID,该ID应该在真机测试的阶段在Xcode中就配置好了,所以此处略过。
然后登陆网页版的 App Store Connect ,新建App,并填写基本信息。

检查 Xcode 项目设置

根据官方文档中的检查列表检查设置,但是注意:

  1. Runner > General > Identity > Display Name 内容不能修改,需要保持为Runner。如果修改了会导致运行flutter build ios找不到runner报错。修改app名称应该在Info.plist中修改CFBundleName
  2. Runner > General > Frameworks 中App.framework、Flutter.framework和Pods_Runner.framework的Embed状态都应该为Embed & Sign。

创建一个构建归档(build archive)

根据官方文档操作,另外还需注意:

  1. 我当前使用的 Flutter 1.12.13 + IOS 13.3.1 + Xcode 11 在进行 Product > Archive 创建归档的时候报错,此时需要将Pods_Runner.framework的状态修改为Do Not Embed,然后进行归档(当然在flutter build ios的时候还要改回Embed & Sign)。
  2. 项目中使用了 flutter_local_notifications 包来进行本地通知推送,而该包依赖另一个 permission_handler 包来进行权限获取,它默认是获取全部权限的,而有些权限在项目中并没有用到,所以还需要根据其文档在Podfile中进行权限配置。确实用的的权限需要在`Info.plist中添加对应的权限使用说明。
  3. IOS要求添加Push Notifications的权限配置,即使项目仅使用了Local Notification,在 Runner > Signing & Capabilities 中点击 + Capability 并添加Push Notifications,这样在build的时候Xcode就会生成entitlement file。如果没有自动生成的话,可以手动添加到Runner目录中,文件名为Runner.entitlement




    aps-environment
    development


发布到TestFlight

发布成功,邀请内部测试人员测试。

你可能感兴趣的:(Flutter打包并发布 iOS 应用)