xcode根据不同的targets控制不同版本的APP

在开发过程中,需要同时处理小屏和横屏不同版本的APP。通过以下步骤,即可实现。由于工程中嵌套了一个子工程,因此子工程和本工程都需要做相应的操作。
1、子工程中,分别右键其中每个TARGETS的名称-->Duplicate,生成的名称为原名称加上“copy”字样的名称。点击两下KSPassport、KSPassportResource重命名为KSPassport_FullScreen、KSPassportResource_FullScreen.
子工程中复制生成targets效果图如下:


xcode根据不同的targets控制不同版本的APP_第1张图片
原子工程TARGETS.png
xcode根据不同的targets控制不同版本的APP_第2张图片
复制子工程TARGETS后生成的文件目录.png

2、本工程中,复制生成新的应用,并修改其名称


xcode根据不同的targets控制不同版本的APP_第3张图片
本工程原TARGETS目录.png
xcode根据不同的targets控制不同版本的APP_第4张图片
本工程复制后生成的TARGETS目录.png
本工程生成的.app文件.png

3、点击本工程名称-->Manage Scheme,点击修改相应的文件名称


设置Scheme的入口.png
xcode根据不同的targets控制不同版本的APP_第5张图片
修改名称.png

4、在代码中根据全局的宏定义来分别处理两个版本。在子工程中,全局宏定义如下图所示,在小屏时设置一个NONFULLSCREEN的参数,在横屏时无需设置此宏定义参数。

xcode根据不同的targets控制不同版本的APP_第6张图片
子工程的小屏设置一个宏定义参数.png

代码区分如下:

{
          #if defined (NONFULLSCREEN)
                 //小屏代码处理  
          #else
                 //横屏代码处理     
          #endif 
}

注意:代码处理过程中要加载不同的bundle,因此也需要根据该宏定义参数进行区分。
5、在本工程中,根据两个应用的不同加载不同的Target Denpendencies,如图:

xcode根据不同的targets控制不同版本的APP_第7张图片
小屏.png

xcode根据不同的targets控制不同版本的APP_第8张图片
横屏.png

运行程序时,选择不同的应用即可区分开两个APP.
6、 在本工程中,由于是直接复制应用的,因此其Build里的参数都是一样的。所以需要将横屏里的build参数进行修改,主要有以下两项,在Build Phases中:
Link Binary With Libraries中的libKSPassport.a,换成libKSPassport_FullScreen.a
Copy Bundle Resources中的KSPassportResource.bundle换成KSPassportResource_FullScreen.bundle

7、最后可以根据需要,在子工程中的资源里面选择各自所需要的资源,删掉不必要的资源文件。

你可能感兴趣的:(xcode根据不同的targets控制不同版本的APP)