上一篇提到通过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整篇文章到这就完结了,希望能帮到各位