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

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

配置多Target

我们在一个工程里创建多个target来管理不同的app的配置信息,首先在 TARGETS 里右键选择要作为模板的target,点击Duplicate复制target。da7ddfd405c4101a162230f9514c478f.png

这个操作会复制一个target、scheme和info.plist 配置文件,得到下图:0d9772b5562c6140ee1acb08608fe5e7.png

然后我们可以修改target、scheme和info.plist名称。e7610dff28053d4775de5ee8d8b6181e.png

注意修改info.plist文件名后需要重新为 target 指定info.plist配置文件。bd94c34b600fa6cdbca96ce84d4b62df.png

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

2a1779a65b1635d185945ae824fcadb0.png

然后设置AppIcon,启动图也是同理。f10eef53b8b346911df8148ca61dba4f.png

如果在app内需要根据不同的target配置一些差异性的内容或图片,我们可以在对应的info.plist中添加字段来控制。比如我们可以在info.plist中添加我们想要的数据:f83a5a458c23f9522aca9de0c7870f53.png

然后创建一个配置文件来保存这些配置到内存中供我们使用,我用的是Swift语言,所以我使用全局变量,如果是OC可以使用单利对象的形式。15d19184d2590f635367d7c287b56098.png

然后在程序启动的时候去加载这些配置信息。249ba17f5ce592a924ac886560eb7fe5.png

这样我们就可以在app内对字符串、图片或者一些逻辑判断进行区别控制了。最后需要注意的是,如果使用的是CocoaPods来管理我们的第三方库,我们需要在Profile里重新指定下target。d3dd4527649f1671bf022166d992562e.png

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

配置Fastlane

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

在项目目录,初始化fastlane。

$ fastlane init

执行过程中,第一个?号直接回车,后面会提示输入苹果开发者账号等信息,设置后会自动去下载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 文件,内容参考如下:

APPLE_ID = "开发者账号"

FASTLANE_PASSWORD = "开发者密码"

TEAM_ID = "团队ID"

APP_IDENTIFIER = "Bundle Identifier"

SCHEME_NAME = "scheme名称"

METHOD = "打包方式,可选enterprise、app-store等"

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

app_identifier ENV['APP_IDENTIFIER']

apple_id ENV['APPLE_ID']

team_id ENV['TEAM_ID']

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

fastlane_version "2.66.2"

default_platform :ios

platform :ios do

desc "打包单个"

lane :deploy do

gym(

scheme: ENV['SCHEME_NAME'],

export_method: ENV['METHOD'],

output_directory: "导出ipa文件的目录路径"

)

end

desc "打包所有"

lane :deploy_all do

cocoapods

sh "fastlane deploy --env daihuanbao"

sh "fastlane deploy --env kahuan"

sh "fastlane deploy --env qingsonghuan"

sh "fastlane deploy --env shishihuan"

sh "fastlane deploy --env suixinghuan"

sh "fastlane deploy --env ti500wanshenhe"

sh "fastlane deploy --env wuyoudaihuan"

sh "fastlane deploy --env yihuan"

sh "fastlane deploy --env eyongka"

end

end

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

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

fastlane deploy_all

配置蒲公英

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

fastlane add_plugin pgyer

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

# Autogenerated by fastlane

#

# Ensure this file is checked in to source control!

source "https://rubygems.org"

gem 'fastlane'

gem 'cocoapods'

plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')

eval_gemfile(plugins_path) if File.exist?(plugins_path)

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

fastlane_version "2.66.2"

default_platform :ios

platform :ios do

desc "打包单个"

lane :deploy do

gym(

scheme: ENV['SCHEME_NAME'],

export_method: ENV['METHOD'],

output_directory: "导出ipa文件的目录路径"

)

pgyer(api_key: "你的app_key", user_key: "你的user_key")

end

desc "打包所有"

lane :deploy_all do

cocoapods

sh "fastlane deploy --env daihuanbao"

sh "fastlane deploy --env kahuan"

sh "fastlane deploy --env qingsonghuan"

sh "fastlane deploy --env shishihuan"

sh "fastlane deploy --env suixinghuan"

sh "fastlane deploy --env ti500wanshenhe"

sh "fastlane deploy --env wuyoudaihuan"

sh "fastlane deploy --env yihuan"

sh "fastlane deploy --env eyongka"

end

end

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

bundle exec fastlane deploy_all

最终配置完成后的目录结构参考:72913e9e441ac820d39f019d51545546.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值