Xcode,项目里配置不同target来完成版本控制

上一篇提到通过fastlane来实现自动化打包,那么今天的内容就是通过创建多个target来实现项目中测试环境、正式环境的相互切换,再配合fastlane来实现不同环境的快速打包.这两个结合真的能解决你不同环境下手动切换的苦恼.

首先介绍下project和target的关系,一个项目只能有一个project:

project的配置是管理整个项目下所有target的配置,而每个target的配置只针对自己的target,改动后并不会影响其他target的配置,如果target的配置和project的配置冲突,那么优先target的配置.

接下来进入实践阶段:

首先创建target,创建target有两种方式,第一种通过New->Target,创建一个新的target,这种方式后续还要配置一堆,麻烦,放弃掉,第二张就是从原有的target上复制一个新的出来,只需要做些小调整就行.

首先如下图,复制一个新的:

选择红框内的

复制成功后,注意左边在项目根目录会多出一个新的plist文件,这是和你复制的target是对应的.接下来把命名修改的正规些:

这还不算完,scheme里面的target名称还没修改过来,还需要去build setting里面修改plist的命名,我们还需要去scheme修改target的命名:

修改成和外面一致的命名就行,还需要修改plist在新target设置里面的路径,由于刚修改了plist文件的命名:

修改成对应的plist文件命名 现在你的project下已经有了两个target,你可以对不同target做不同的配置,比如bundle id,版本号,等等:

分别选择一个运行就行

当然除了系统的一些配置,你可还需要一个参数来区分两个target的环境,这里参考系统的DEBUG的全局宏来搞事情,首先选择任意一个target,在Build setting栏搜索macros,找到下图框选的全局宏设置栏Preprocessor Macros,你可以看到系统的DEBUG宏在这里的设置 :

接下来我们也参考DEBUG宏的设置去加入自己自定义的全局宏:

笔者因为要区分测试环境与正式环境所以我在正式环境的target下定义了一个ISPRODUCTION的宏,我设置为1,现在我需要去测试环境的target下做同样的事情,定义ISPRODUCTIO=0的宏,那么在DEBUG环境下,你就可以使用ISPRODUCTIO这个宏来区分不同的target,进而做不同的事:

当然你打包的时候也需要在release下做一次同样的配置,两个target下都需要写同一个宏的定义哦:

就在笔者长舒一个口气之时,发现切换到dev的target环境下,工程跑不起来,报头文件找不到,看下报错,发现pod的库都链接不到,再对比了两个target的build setting的Header path后,发现dev环境根本就没有链接任何路径,再回头看下profile文件,原来是profile文件只写了正式环境的target配置,刚刚自己在正式环境上导了第三方库并pod install了,这样一搞,之前pod的配置都要重新洗牌,所以dev下pod就直接没了,知道问题在哪了,那么就在profile下写两个target的配置,重新pod install,搞定:

最后配合fastlane的打包一起使用,在fastlane里面定义两个laneh函数,一个配置测试环境的打包,一个配置正式环境的打包:

爽歪歪呀,还没看过fastlane的,请点击我的上一篇文章https://juejin.im/post/5caeb509f265da03a1581643

整篇文章到这就完结了,希望能帮到各位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值