网络知识 娱乐 Fastlane实现一键自动打包(多Target 多开发者账号)

Fastlane实现一键自动打包(多Target 多开发者账号)

  • Fastlane简介

fastlane 官网已经讲得非常清楚,fastlane 是一个关于 App 发布的工具集,除了提供 iOS 发布相关工具外,也支持 Android App 发布。根据官网显示,目前已经为开发者节省了6158597 个小时,被誉为开发者的救星也不为过。

  • Fastlane安装

我们可以通过$ sudo gem install fastlane -NV 来执行安装,或者通过homebrew来安装:brew install fastlane。

  • Fastlane配置

在 xcode 工程目录下,执行$ fastlane init

执行过程中,会提示输入苹果账号密码,自动下载 App 元数据等信息,由于我们的 xcode 工程中使用的是 mutil target,但 fastlane init 只能处理一个 target 的信息,所以我们按照提示输入任意一个 target 的相关信息就行了,后面通过修改配置文件来实现 mutil target 的支持。

fastlane 初始化完成后,会在 xcode 目录下自动生成以下文件:

metadata 目录:存放 App 元数据,包括 App 简介,Icon,Copyright 等

screenshots 目录:顾名思义,存放 App store 中的截图

Appfile:用于指定 app_identifier, apple_id, team_id;本文中每个 target 都有自己的 app_identifier, apple_id 和 team_id

Deliverfile:用于指定跟 App 版本发布相关的信息,除了 apple_identifier 外,还包括 submit_for_review, automatic_release 等可配置项,基本覆盖 iTunes Connect 里面的所有选项

Fastfile:用于编写逻辑脚本,使用 ruby 语言,例如首先执行 cocoapods 更新第三方依赖库,然后执行 pem 更新相关证书,接着通过 gym 来编译并打包 ipa 文件,最后通过 deliver 发布到 iTunes Connect 中,并提交审核。具体逻辑按照开发者需求自行设计。

  • Fastlane配置文件修改

fastlane 默认支持一个 target,对于这类型需求,只需要按着 fastlane 提供的官方教程学习即可,很简单。但对于 mutil target,并且每个 target 对应不同的开发者账号的情况,配置起来稍微有点不同。

使用.env环境变量文件配置多target
 fastlane init 后默认生成的文件中并没有.env 文件。此文件的作用理解起来很简单,说白了就是自定义临时变量,供 Appfile, Deliverfile和 Fastfile使用。理解原理后,使用起来就简单了,就是有几个 target,就创建几个.env 文件,提供不同的变量值,供不同 target 编译打包上传时使用。

咱们有4个target,对应两个开发者账号,所以我写了.env.tiandy和.env.smart,其配置,其中保存各自的开发者账号相关信息。如图:

不同 账号信息可以通过env环境变量来设置    
其他配置文件可通过 ENV['APP_IDENTIFIER'] 来读取变量值
$ app_identifier ENV['APP_IDENTIFIER']
fastlane 调用时,通过添加参数 --env 来指定待读取的 .env 文件.

  • Appfile文件修改成使用ENV读取配置如图:

每个target读取均从env环境变量中读取对应的开发者信息

  • FastLane 配置

在对 Fastfile 进行配置前,我们先了解下 lane.lane可以理解为 fastlane 的执行脚本,一个Fastfile 里可以编写任意个lane,每个lane都可以独立运行,也可以嵌套运行。话不多说,直接上代码:

我们可以通过执行fastlane deploy_in来同时打多个target脚本,最终我们可以再Fastfile中编写我们想要实现的事务脚本