/ iOS 开发

为 Xcode 工称添加多个 Targets

在项目中经常会遇到这样的需求,同一份代码需要根据不同环境打出不同的包,比如:开发环境、测试环境、生产环境等等,很多时候仅仅是修改一下 BaseAPI,但是这样会频繁的修改代码,而且容易出错。Xcode 可以创建多个 Targets,可以将 App 部分配置和代码进行分离,打包时选择相应的 Targets 就好了。

创建 Targets

我们可以在 General -> Targets 列表中选中一个 Targets,然后使用 Command-D 来 Duplicate 一个 Targets,你可以选择 Duplicate Only 或者 Duplicate and Transition to iPad,Duplicate Only 仅仅复制当前 Target,Duplicate and Transition to iPad 会将当前 Targets 复制并转为 iPad 的 Targets。

一般的话,如果不是需要在同一个工程对 iPhone 和 iPad 进行打包,我们选择 Duplicate Only 即可。

接下来需要将 Targets 名称,info.plist 名称,以及对应的 Schemes 改为统一的名称。并在 General -> Identity 中重新选择对应的 plist 文件。

修改 Macros

接下来我们需要在代码中区分相应的环境。首先在 Build Settings 中搜索 macro,在 Preprocessor Macros 中添加相应的环境字段,比如我在 Beta 环境添加的标识为 BETA

如何在代码中区分环境?

我们可以根据在 Preprocessor Macros 中添加的标识来区分对应的环境,示例代码如下:

#if defined(DEV)
static NSString* const API_Base_URL @"http://dev.abc.com/"
#elif defined(BETA)
static NSString* const API_Base_URL @"http://beta.abc.com/"
#elif defined(RELEASE)
static NSString* const API_Base_URL @"http://release.abc.com/"
#else
static NSString* const API_Base_URL @"http://www.abc.com/"
#endif

这样我们就完成了在代码中对环境的区分。