原文:http://blog.csdn.net/ysysbaobei/article/details/10951991
** 在ios开发时,我们经常会遇到对同一个app开发多个版本(Pro、Lite、Free)的情况,这里就涉及到xcode里通过添加多个targets来进行版本控制的问题了,下面就简单说明一下:**
点击左侧的工程名称,右侧会出现PROJECT和TARGETS,点击你现在的target,假如叫A,右键弹出菜单中,选择Duplicate,复制一个相同的target,复制的target一般叫A copy,A copy和A的设置(编译条件、源文件、资源文件)完全一样,此时你可以根据需要修改A copy的编译条件和资源文件了;
- A copy的名称是不是显得不够专业?现在来修改一下:
- 首先修改Xcode左上角的target名称:
点击xcode左上角Run、Stop右边的工程名称,下拉框中选择Manage Schemes
,在弹出框中,点击A copy那行,点击一次、再点击一次,就可以修改A copy为你想要的名字了,比如ALite; - 修改xcode左下方Products下的A copy.app名称:
点击Targets下你刚才改名后的ALite,点击Bulid Setting
,搜索Packaging
下的Private Headers Folder Path
,修改A copy.app/PrivateHeaders
为:ALite.app/PrivateHeaders
;
- 修改Bundle Identifier和选择不同的证书,让app区分开来
- 新target需要的.plist文件
新建一个文件夹X,添加X到项目中,添加时选择target为ALite,不要选target A了,因为不是共用的;复制原来target的A-Info.plist到X,修改其名称为ALite-Info.plist,xcode中右键Add File To ...,选择添加到target ALite中; - 点击target: ALite ->Summary:提示你需要选择plist文件,选择1)中添加的ALite-Info.plist;
- 点击target: ALite ->Summary:设置Bundle Idenfitier;
- 点击target: ALite->Build Settings->Code Signing:选择另外的证书;
修改程序名称
一般说来,多个target的程序名称不同,复制zh-Hans.lproj和en.lproj下的InfoPlist.strings文件到X,xcode中右键Add File To ...,选择添加到target ALite中;然后修改InfoPlist.strings的内容:CFBundleDisplayName="程序名称Lite";2个target到现在就创建好了,你添加资源文件的时候,通过选择添加的target来控制不同版本的内容;再说一下预编译宏的事情:target->Build Setting,搜索:Preprocessor Macros,设置Debug和Release里的预编译宏内容,比如TARGET_VERSION_LITE=1表示lite版本(注意=前后不能右空格,有空格会编译不过),程序中对不同版本这样判断:
#if TARGET_VERSION_LITE ==1
...
#elif TARGET_VERSION_LITE ==2
...
#endif