在开发过程中,一般会有开发环境、测试环境和生产环境,为了方便起见,多Targets是一个不错的选择,下面就总结一下我的经验。
1、创建多Targets
在TARGETS下的工程鼠标右键选择Duplicate进行复制
image.png
分别创建project_pro(生产环境)、project_dev(开发环境)、project_test(测试环境)(第一步的框框)
image.png
与此同时会同步创建了相对应的Info文件(第二部的框框)
修改Info文件名与Target名字相对应
image.png
修改Info的路径
对应的target要添加对应的info,最好用相对路径($(SRCROOT))
image.png
修改scheme里的target名称。 选择"Product"->"Scheme"->"Edit Scheme"
image.png image.png
创建xcconfig
image.png
记得勾选所有的targets
image.png
分别创建与target对应的xcconfig
image.png
每个文件代码的写法:
Config. xcconfig的写法
GCC_PREPROCESSOR_DEFINITIONS = (API_URL)'
解析如下:
其作用是将配置文件中定义的常量定义成预编译宏,以便于在代码中获取。
GCC_PREPROCESSOR_DEFINITIONS 是 GCC 预编译头参数,对应的设置在 Xcode8下的路径为 Build Settings->Apple LLVM 7.x Preprocessing->Preprocessor Macros,就是我上面提到的设置预编译宏,这里权且可以理解上面这一串代码是在Build Setting中设置预编译宏的代码化,而这里的设置并不会覆盖之前在Build Setting中的设置,只会将这些新增的设置添加到最后面。 上面代码的意思是,定义两个预编译的宏名字分别为VariableA、VariableB,他们具体的值就可以在不同的xcconfig中去设置,不同的xcconfig需要导入这一个Common. xcconfig的文件,这就实现了不同环境下动态的配置,不同环境下的预编译宏名一样只是值会不一样,而且这些xcconfig文件可以在不同的项目中使用。
这样就可以简单的理解为Common. xcconfig实现了一个Build Setting里面的一个方法,而其他的xcconfig文件调用这个方法进行具体设置。
上面在Preprocessor Macros中配置的用于在代码中区分不同环境的预编译宏,也可以直接在Common. xcconfig中设置,只是在代码中进行区分就要区分不同宏的值了。
其他xcconfig的写法:
如果用了Pods 如图下1的路径要和2的路径一致
image.png
其他的xcconfig的API_URL写上相对应的url或者其他的一下值
将xcconfig与环境进行关联:
我们来到工程下的info->Configuration,各自选择对应的xcconfig
image.png
然后运行不同的targets就会获取到不同的xcconfig信息
image.png
参考资料
https://www.jianshu.com/p/c9ae94162e27?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
https://www.cnblogs.com/wangkejia/archive/2018/09/14/9647988.html
https://www.meiwen.com.cn/subject/fxeujqtx.html
网友评论