原文:How to Use Xcode Targets to Manage Development and Production Builds
作者:EugeneTrapeznikov
译者:CocoaChina–skymoon(CC论坛ID)
一、如何创建一个新的Target
所以你如何在Xcode中创建一个开发的target?我使用示例项目“TargetDemo”引导您一步一步完成整个过程。您也可以使用自己的项目并按照步骤:
1、创建target
在项目的导航面板进入项目设置。在Targets区域下,右键单击现有目标并选择 Duplicate
复制现有的目标。
2、选择Duplicate Only
Xcode会询问你新的target是否是为iPad开发。对于本教程,我们只是选择“Duplicate Only”。
提示:如果您的项目支持通用设备,Xcode不会提示上述消息。
3、重命名
现在我们有一个名为TargetDemo copy
的新的target和build scheme。重命名并使之更容易理解。
- (1)、在Targets列表中选择新的target。按Enter键编辑文本,添加一个更合适的名字。我更倾向于“TargetDemo Dev”。你可以自由选择任何你喜欢的名字。
- (2)、接下来,找到“Manage Schemes…”,选择您在步骤1中创建的shceme,并按“输入”,使scheme的名称和新的target的名称相同(这是你为新的target所选择的名字)
4、单独icon和启动页
跳到 Assets.xcassets
添加一个新的图标。右击图标 > App Icons & Launch Images > New iOS App Icon. 新图标重命名为“AppIcon-Dev”同时添加自己的图片。
5、修改Bundle Identifier
6、修改plist文件
Xcode会自动为你的target添加plist文件(如TargetDemo copy-Info.plist)。你可以在项目的根文件夹找到它。将它从“copy”重命名为“Dev”,并将它放在原始的plist文件下。这里你将更容易管理文件。
7、修改Build Settings
现在打开你开发target的“Build Settings”,滚动到“Packaging”,并将值改为开发的plist文件(TargetDemo Dev.plist)。
8、处理宏/编译器标识。
最后,我们会为生产和开发target配置预处理宏/编译器标识。之后我们就可以使用该标识在我们的代码来检测应用程序正在运行的版本。
对于Objective-C的项目,去到Build Settings
下Apple LLVM 7.0 - Preprocessing
。拓展Preprocessor Macros
在Rebug和Release区域添加一个变量。对于开发target(即TargetDemo Dev),将该值设置为DEVELOPMENT = 0
。另一个,将值设为DEVELOPMENT=1
来表示生产版本。
二、使用Target和宏
根据已配置的宏DEV_VERSION,我们可以在代码中利用它动态地编译项目。下面是一个简单的例子:
Objective-C:
#if DEVELOPMENT
#define SERVER_URL @"http://dev.server.com/api/"
#define API_TOKEN @"DI2023409jf90ew"
#else
#define SERVER_URL @"http://prod.server.com/api/"
#define API_TOKEN @"71a629j0f090232"
#endif
三、管理多个target的一些注意事项
- 1、当你添加新的文件到项目中,不要忘记选择两个target,以保持你的代码同步在两个版本。
2、如果你使用的CocoaPods,不要忘了添加新的target到你的podfile中。
3、如果你使用持续集成系统,如 Travis CI 或Jenkins,别忘了配置两个target的build和deliver。