iOS多Target项目自动化打包并上传蒲公英

最近遇到一个需求,就是同一份iOS源码用不同的账号打包不同平台(App Store或企业打包)的多个app,并且每个app的名称、图标、启动图和app内的一些基础信息不同,并且要对这些app持续维护更新。最终采用多 target + fastlane 的方式实现,此篇文章记录下流程和注意点。

配置多Target

我们在一个工程里创建多个target来管理不同的app的配置信息,首先在 TARGETS 里右键选择要作为模板的target,点击Duplicate复制target。iOS多Target项目自动化打包并上传蒲公英

这个操作会复制一个target、scheme和info.plist 配置文件,得到下图:iOS多Target项目自动化打包并上传蒲公英

然后我们可以修改target、scheme和info.plist名称。iOS多Target项目自动化打包并上传蒲公英

注意修改info.plist文件名后需要重新为 target 指定info.plist配置文件。iOS多Target项目自动化打包并上传蒲公英

然后我们就可以单独修改这个target的Bundle Identifier、app图标等信息了,比如我们修改app的图标,先添加AppIcon。

iOS多Target项目自动化打包并上传蒲公英

然后设置AppIcon,启动图也是同理。iOS多Target项目自动化打包并上传蒲公英

如果在app内需要根据不同的target配置一些差异性的内容或图片,我们可以在对应的info.plist中添加字段来控制。比如我们可以在info.plist中添加我们想要的数据:iOS多Target项目自动化打包并上传蒲公英

然后创建一个配置文件来保存这些配置到内存中供我们使用,我用的是Swift语言,所以我使用全局变量,如果是OC可以使用单利对象的形式。iOS多Target项目自动化打包并上传蒲公英

然后在程序启动的时候去加载这些配置信息。iOS多Target项目自动化打包并上传蒲公英

这样我们就可以在app内对字符串、图片或者一些逻辑判断进行区别控制了。最后需要注意的是,如果使用的是CocoaPods来管理我们的第三方库,我们需要在Profile里重新指定下target。iOS多Target项目自动化打包并上传蒲公英

至此我们对项目的多target配置已经完成,我们已经可以使用Xcode来打包这些target了。接下来,我们使用fastlane来自动构建我们的项目。

配置Fastlane

安装fastlane的过程请自行谷歌或查阅官方文档 https://github.com/fastlane/fastlane ,这里就不赘述了,下面的步骤是确保你已经成功安装了Fastlane的情况下继续的。

在项目目录,初始化fastlane。

执行过程中,第一个?号直接回车,后面会提示输入苹果开发者账号等信息,设置后会自动去下载app元数据信息。如果我们是使用多个账号打包,这里可以随便输入一个即可,这次需求不需要自动提交App Store,所以无需在意。

fastlane初始化成功后,会在项目目录下生成一个fastlane目录,里面会有以下几个文件和目录。

Appfile文件:用于配置app_identifier、apple_id、team_id。

Deliverfile文件:用于配置跟 app 版本发布到App Store相关的信息,我们这里暂时不使用。

Fastfile文件:用于编写逻辑脚本,使用 ruby 语言,比如打包、上传到App Store或蒲公英的脚本。

metadata目录:存放 app 元数据,包括 app 简介、Icon、Copyright 等信息。

screenshots目录:存放App Store下载的应用截图。

接下来我们可以针对每个target单独创建一个环境配置文件,在fastlane目录下创建 .env.xxxx 文件,内容参考如下:

然后在Appfile文件中引用这些配置:

最后在Fastfile文件中编写打包逻辑:

就算是不会Ruby语法,从上面的代码中也能清晰的看出,我们只是反复的去调用gym打包不同的target。也就是有多少个target就配置多少个 .env 配置文件,有多少个 .env 配置文件就在 deploy_all 中执行多少次 deploy 指令。

至此我们可以使用一下命令,打包所有target到指定的ipa目录了,如果不需要上传到蒲公英或者希望自己手动上传的话可以这样做。

配置蒲公英

蒲公英官网的文档中有详细的说明 https://www.pgyer.com/doc/view/fastlane ,这里我简介的介绍一下流程。首先我们要先安装蒲公英提供的fastlane插件:

安装成功后,会在项目根目录下生成 Gemfile 和 Gemfile.lock 文件,在fastlane目录下生成 Pluginfile 文件。我们需要修改 Gemfile 文件,在 gem 'fastlane' 后面添加 gem 'cocoapods' ,修改后的内容如下:

然后还需要在 Fastfile 文件中配置蒲公英的 app_keyuser_key ,在 https://www.pgyer.com/account/api 可以查看自己蒲公英的key。修改后 Fastfile 的内容如下:

最后我们可以回到项目所在目录,执行以下命令进行自动打包自动上传到蒲公英:

最终配置完成后的目录结构参考:iOS多Target项目自动化打包并上传蒲公英

六阿哥

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: