注意:实际开发中由于项目会用到第三方插件,对于 download 下来的代码,如果想要不发生与第三方插件的兼容问题,最好本地的 flutter 版本与实际公司开发环境一致。哪怕只是1.5到1.6一个小版本的改动,也会导致一系列的错误。

由于 flutter 需要 Xcode 9.0 以上的版本才能进行打包操作,如更新不到此版本,请先升级 Mac 系统。

配置系统环境:

首先下载 flutter SDK,并将其添加环境变量到 .bash_profile :

$ cd ~
$ vim .bash_profile

然后向 .bash_profile 文件中添加 flutter 的地址,使得flutter命令在任何地方都可以使用:

export PATH=/usr/local/lib/flutter/bin:$PATH

运行 flutter doctor ,根据提示依次安装 Android toolchainios toolchain

其中 Android toolchain 下载 Android SDK 即可配置成功。下载完成后运行 flutter doctor --android-licenses 允许 Android 的各种协议,一路输 y 表示同意即可。

ios toolchain flutter 推荐使用 brew 命令进行安装。在运行 flutter doctor 会给出安装提示,照着提示安装即可。大概需要花费一到两个小时。

当运行 flutter doctor 提示除了 IDE 之外的所有软件包都安装完成之后,就可以进行打包了。

打包成 IPA 文件:

项目根目录下运行 open ios/Runner.xcworkspce 将 ios 项目运行到 xcode 上。

xcode_page

下面依次解释一下各个配置项的意思:

  • Identity:

    • Display Name : 即项目名字
    • Bundle Identifier : 在 iTunes Connect 上注册的 App ID。(类似于 Android 的应用唯一包名:com.xxx.xxx)
    • Version : 版本名称,类似于 Android 的 VersionName
    • Build : 版本号,类似于 Android 的 VersionCode
  • Signing : 用于设置签名文件

  • Deployment Info: 用于设置 app 可支持的设备,设备所对应的 ios 最低版本和屏幕和否横屏竖屏等

  • App Icons and Launch Images : 用于设置桌面启动图标和启动图文件,在 Runner 文件夹中选择 Assets.xcassets/Appicon,里面有相应的图标,替换即可。

运行 flutter build ios 来创建 iOS 的 release 版本(flutter build 默认为 --release)。

接着归档打包成 IPA文件并可上传到 App Store : Xcode 工具栏 Product 中选择 Archive 即可,,特别注意:此时 Runner 设备必须选择 Generic iOS Device,然后根据提示选择 APP 的分发方法,再选择一个目标地址,即是选择直接发布到 AppStore 还是打包成 IPA 文件通过上传工具进行上传。

打包中出现的版本和构建问题:

  1. 当项目从 Windows 转到 Mac ,需要重新导包,不然项目找不到包地址:

    解决方法:删除 项目根目录下的 .package 文件,并运行flutter packages get 或运行 flutter packages upgrade 重新导包。然后重启 IDE。

    https://github.com/flutter/flutter/issues/17016

  2. 打包过程中报错的话,重新打包要执行 flutter clean 命令,清除构建信息。

    https://github.com/flutter/flutter/issues/29232

    https://github.com/flutter/flutter/issues/24369

  3. 可能是flutter版本的问题,在 Mac 上一开始下载的版本是 1.5.4-hotfix.2,第三方库各种报错不兼容,版本升级到1.6以上得以解决问题。

    https://github.com/flutter/flutter/issues/33827

    https://github.com/Sky24n/flustars/issues/10

    https://github.com/flutter/flutter/issues/22467

  4. 针对 flutter packages get 下载包速度过慢问题,可以参考 Using Flutter in China ,即设置环境变量,使用谷歌中国提供的镜像:

    export PUB_HOSTED_URL=https://pub.flutter-io.cn
    export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn