在Xcode中添加多个targets进行版本控制,就是同一个app开发多个版本
以Xcode7.3.1 为例
1. 创建
点击左侧工程项目文件,选择TARGETS 下的项目右击选择 Duplicate。
看到这个弹框:(标准iPhone程序选Duplicate Only,如果需要iPad就选Duplicate and Transition to iPad)
就会看到TARGETS 下会出现一个 testCode copy
2.改名字
(1)点击xcode左上角Run、Stop右边的工程名称,下拉框中选择 Manage Schemes,在弹出框中,点击A copy那行,点击一次、再点击一次,就可以修改A copy为你想要的名字了,比如ALite;
(2)修改xcode左下方Products下的TestCode copy.app名称
选择新加的项目名,选”Build Settings” 搜索 “Packaging”下的”private Headers Folder Path”,修改testCode Copy/PrivateHeaders为 “TwoTestCode.app/PrivateHeaders”;
(3)把TARGETS 下的名字也改一改
3.修改Bundle Identifier和选择不同的证书,让app区分开来
Xcode 7.3.1已经把 .plist 生成了(多人性化啊)
接着直接创建个新的文件夹放 TwoTestCode的资料。(建议在工程文件夹里面创建再拖拽进来,记得选的是TwoTestCode)
之后就是这样
4.修改程序的名字和国际化
看这个帖子加国际化: http://www.jianshu.com/p/af5164fad6b1
target的程序名称都会不同,复制zh-Hans.lproj和en.lproj下的InfoPlist.strings文件到先前创建的TwoTestCode文件,然后修改InfoPlist.strings的内容:"CFBundleDisplayName"="TwoTestCode";
注意选择类型来改:
5.设立全局的宏定义来区分
选择TARGETS下的testCode->Build Setting,搜索:Preprocessor Macros,设置Debug和Release里的预编译宏内容,比如:TARGET_VERSION_LITE=1
(注意=前后不能右空格,有空格会编译不过)
最后:程序中对不同版本这样判断:
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
#if TARGET_VERSION_LITE ==1
return6;
#elif TARGET_VERSION_LITE ==2
return5;
#endif
return5;
}