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

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


原子工程TARGETS.png
复制子工程TARGETS后生成的文件目录.png

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


本工程原TARGETS目录.png
本工程复制后生成的TARGETS目录.png
本工程生成的.app文件.png

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


设置Scheme的入口.png
修改名称.png

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

子工程的小屏设置一个宏定义参数.png

代码区分如下:

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

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

小屏.png

横屏.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、最后可以根据需要,在子工程中的资源里面选择各自所需要的资源,删掉不必要的资源文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容