Linux配置scheme环境,用 Xcode Configuration 和 Scheme 配置项目环境

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

logo.svg

想象一个场景,我们正在开发一款支付系统,这个支付系统同时支持有Web版和原生的iOS APP版本。

这个支付系统有三个环境:dev: 调用支付的开发环境接口,并不会真的扣钱。

qa: 调用支付的测试环境接口,假的测试账户中的余额会发生变化。

production: 调用产品环境中的支付接口,账户余额和钱会真实发生变化。

对于 Web 版的系统,我可以在浏览器中打开三个窗口,然后依次输入不同环境下的域名: www.dev.pay-example.com,www.qa.pay-example.com,www.prod.pay-example.com 来分别进行测试。

对于 iOS APP 呢?我们想要的其实是类似的,打开一台手机,我们可以同时安装三个APP:PayExampleDev,PayExampleQA,PayExample 然后可以切换APP来使用它们。

那么怎样通过一个 iOS 工程打包出三个不同的 APP 呢?方法很多,本文我们就来介绍通过 Xcode Configuration 和 Scheme 的配置方式来实现。新建 Group,命名为:Configuration

在 Configuration 中新建不同环境下的 Configuration Settings file

具体步骤如下图:

1.gif

配置项目的 Configuration在不同的 Configuration file 中,配置需要的键值对,用于在项目中引用,具体配置,请参考 Demo源码

Project -> Info -> Configurations

将 Configurations 配置为 Dev、QA、Prod,并配置对应的 Configuration File

具体步骤如下图:

4a9cf63b3a899e17734bf88631482fb2.gif

创建 scheme创建 scheme (PayExampleDev、PayExampleQA、PayExampleProd),供不同环境使用

Edit Scheme -> Step -> Info -> Build Configuration,配置对应的 Build Configuration 为 Dev、QA、Prod

3.gif

在项目配置中引用 xcconfig 中定义的变量PayExample target -> General -> Display Name

配置 Display Name 为 $(PE_BUNDLE_NAME)

具体步骤如下图:

74fcf29d4d7bb846aa6e3eba7c7bde6e.gif

在某一个 Scheme 上执行某操作时,在此 Scheme 的此步骤上定义的 BuildConfig 就会生效。

比如:

用于打包 QA 环境的scheme PayExampleQA,其 Build 配置的 Build Configuration 为 QA

QA 在 Configuration 中配置的 config 文件为:qa.xcconfig

项目中,APP 的 Display Name 的值为:$(PE_BUNDLE_NAME)

qa.xcconfig 中 PE_BUNDLE_NAME 的值为 PayExampleQA

如此 PayExampleQA scheme 在打包后,显示的APP名称为 PayExampleQA

Setup bundle identifier

iOS 中是通过 bundle identifier 来标识不同的应用的。也就是说,想要通过一份代码同时编译出三个应用安装到设备中,我们需要在 dev.xcconfig, qa.xcconfig, prod.xcconfig 中分别定义 BUNDLE_IDENTIFIER ,并在项目配置中引用它。

当我们直接在配置中定义 PE_BUNDLE_ID ,并在项目配置中引用它时(Xcode10.1 (10B61)),会发现配置无效(如下图)

6379220e3706be93e8fa31b757bccce9.png

当查看 info.plist 时,可以发现 Bundle identifier 的 value 是 $(PRODUCT_BUNDLE_IDENTIFIER)。 我们可以在 Project -> Build Settings -> Product Bundle Identifier 中配置它的值为 $(PE_BUNDLE_ID)。具体操作如下图:

a14c553a209262aba28f9409f4ac6019.gif

最终效果

完成上述配置以后,我们可以在不同 Scheme 下执行 run 命令将 APP 安装到模拟器中,查看效果:

6.gif

What’s More

如果你需要在 Jenkins 或者 Travis 中搭建 pipeline,此配置同样适用。

当我们用脚本来打包 APP 时,会执行如下命令:1

2

3

4

5xcodebuild archive -workspace 项目名称.xcworkspace

-scheme scheme名称

-archivePath archive包存储路径

CODE_SIGN_IDENTITY=证书

PROVISIONING_PROFILE=描述文件UUID

通过指定不同的 scheme 即可管理不同环境下的项目配置。

构建 pipeline 将会在后续文章中详细介绍,敬请期待!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值