在每个项目的开发过程中都会涉及到 测试环境与发布环境得切换。最原始得方式是 每次运行与打包都手动修改环境配置代码,但这样效率地下,而且出错率极高。然而另一种一劳永逸的方式就是使用多个Target,并结合自定义的预编译条件。
创建Target
选中当前的Project,右键需要多环境管理的target,点击Duplicate
,生成当前target的拷贝。项目中的plist,Scheme也都相应的生成一份拷贝。
可在Manage Scheme中修改Scheme名称等信息
image可在build setting中修改target对应的plist
image每个target的配置是相互独立的,可以分别配置Bundle id,Version, AppIcon, 证书等等。
注意:在为项目添加新文件时需要将对应的target都勾选
创建预编译条件在代码中区分target
还是在build setting中配置, 此处添加了一个APPSTORE 标签
image
在不同的target执行不同的代码
#if APPSTORE
print("this is app store target")
#else
#endif
在不同的target配置不同的网络请求host
#if APPSTORE
let host = "https://zytest.release/"
#else
let host = "https://zytest.staging/"
#endif
对于数据分析平台,推送等需要设置不同的key的情况,都可以通过该预编译条件,以同一变量名的配置不同的值。
结合CocoaPods
pod对库的管理也是以target为基础。添加target后需要在Podfile中添加对应的target。对于target也就可以分别引入不同的库。此处对于配置管理,一般引入的库都是相同,可以在Podfile中使用def定义需要引入的库。
def podLibs
pod Alamofire
end
target 'ZYAppStoreTarget' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
podLibs
end
target 'ZYInHouseTarget' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
podLibs
end
最后在运行或者打包时选择对应的target即可。
网友评论