利用Target完成多环境配置
利用Target
完成多环境配置
在TARGETS
下选中对应Target
右键选择Duplicate
, 会产生一个新的Target
、Scheme
和一个新的info.plist
文件, 带有默认名称
接下来为新的Target
、Scheme
和info.plist
文件修改名称, 设定新的bundleID
(Duplicate
后原BundleID
也会相应变化), 完成新Target
的初步设定
修改好名称后, 记得在新Target
的Build settings
中更新info.plist
文件名称
这样新的Target
就新增好了, 接下来就可以借助多Target
进行多环境配置了
实际运用
设置不同的
App icon
先在
Assets.xcassets
中新建一个iOS App icon
, 为两组App icon
设置不同图片在
Project
-General
下, 为不同Target
设置App icons and Launch images
配合自定义宏, 完成不同的环境配置
在多
Target
基础上, 选择我们将要新增自定义宏的Target
在
Build settings
-Preprocessor Macros
下, 为其新增自定义宏代码中针对不同的环境执行不同处理
#if DEV self.describeLabel.text = @"DEV target环境下"; #else self.describeLabel.text = @"多Target实现多环境配置"; #endif
示例配置中对
Debug
和Release
设定了不同的值, 即RELEASE=0
,DEBUG=1
在使用与处理指令#if
时, 存在自定义的宏DEV
且值为1
时有效, 执行#if DEV
分支代码
将#if DEV
换成#ifdef DEV
, 只要存在DEV
的定义, 就会执行#ifdef DEV
分支代码#ifdef
只是判断后面的标识符有没有定义,而不在乎标识符的值,标识符是0
是1
对它来说都没有区别,只要预先定义了,执行#ifdef
后的代码#if
指令更像常规的C
中的if
,#if
后跟常量整数表达式。如果表达式为非零值,则表达式为真如果是
Swfit
项目, 在Other Swift Flags
来新增环境变量
注意前面需要增加-D
后面是自定义的参数, 中间可以有空格, 也可以没有空格
方案不足之处:
配置零散, 尤其是在为
Target
设置不同环境变量(自定义宏)时
参考资料
使用 Xcode 的 Target 区分开发和生产环境 、 关于管理多个 Target 的一些注意事项
下一篇: 利用Scheme
完成多环境配置