xcode中同一project创建多个target

xcode中同一project创建多个target

 

新的Target

1 利用复制创建target

我们在XCode左侧的列表中, 展开 Targets 项, 在现有的target上, 右键选择"Duplicate"

计算机生成了可选文字:PROJECT Pacs TARGETS pacsdoc pacsdoc_test Basic Duplicate Delete General Combined Setting Levels Analyze During 'Build' Mode of Analysis for 'Analyze' Mode of Analysis for 'Build' Project Editor Help Improper Memory Management Misuse of Grand Central Dispatch

此时我们就得到了一个新的target, 而在Resource里面也会得到一个 xxxx copy.plist.这个新的target与原有的target是完全一致的, 余下的就是一些差异化的修改。我目前使用到的主要是这种方法。

2.创建全新的target

直接File - New - Add - Target

计算机生成了可选文字:Xcode nPacs n PacsTes Framewo Products Podfile Frame Products Targets S Pods- Pods- File Edit View Find New Add Files to "pacs" Open.. Open Recent Open Quickly... Close Window Close Tab Close "pacs.xcodeproj" Close Workspace Save Duplicate... Revert to Saved... Unlock... Export... Show in Finder Open with External Editor Save As Workspace... Workspace Settings... Page Setup... print... Navigate osgo Asew -c sew Editor Product Debug Source Control Basic Wind Tab Window File... Playground... Target... Project... Workspace... Group x-a-*ßN Setting Analyze Du Mode of Mode of Static Analyzer - Gen Setting Dead Store: mproper Misuse of C Static Analyzer - Issu Setting @synchroni Improper H' Method Sig Misuse of Unused Ival Violation of Violation of Group from Selection

或者直接点target栏左下角的 加号

计算机生成了可选文字:Basic Settin Ana lyi Mode Mode Static Analyzer Settin Misus Static Analyzer Settin @sync Metho Misus• Violati Violati Static Analyzer Settin Floatir Misus Unchc User-Defined Settin PODS PROJECT Pacs TARGETS pacsdoc pacsdoc_test e Filter

点击后, 首先会让你选择target的类型, 既然我一直所指的都是程序本身,那么自然选择Application了(至于其他的嘛, 有兴趣的自己研究吧, 比如我们可以把程序中的部分提取成一个Static Library).

Next后, 会让你输入一个新的Target的名字, 而不像复制的方法中, 默认生成 xxxxxcopy这样的target名.

但是这样生成出的Target几乎是空的。可以通过拖拽内容到这些target的设置中,以及调整编译选项来完成Target的配置.(这种方法我木有用过。。)

3.执行不同的target

xcode左上角RUNSTOP的右边可以选择执行的target和设备,选择对应的即可

计算机生成了可选文字:soed q oopsoed

 

计算机生成了可选文字:nPacs pacsdoc pacspro pacsdoc_test pacspro_test Edit Scheme... h AppDeIegate.h New Scheme... m AppDeIegate.m Manage Schemes... pro_te st doc_test

 

Targets之间的个性化设置

即使代码是同一份, 但编译设置(比如编译条件),以及包含的资源文件却可以有很大的差别,产出的product也可能大不相同。不同target可以包含不同的资源,包括程序的主图标等, 而不是把XCode的工程中列出的资源一股脑的包含进去。

而这还不是一个target所指定的全部内容. 每个target可以使用一个独立、 不同的Info.plist文件。

我们都知道, 这个Info.plist文件内定义了一个项目的很多关键性内容, 比如程序名称,最终生成product的全局唯一id等等。

而且不同的target还可以定义完整的差异化的编译设置,从简单的调整优化选项,到增加条件编译所使用的编译条件,以至于所使用的baseSDK都可以差异化指定。

我们来举几个典型的应用多Targets的情况吧,比如完整版和lite版;比如同一个游戏的20关,30关,50关版;再或者比如同一个游戏换些资源和名字就当新游戏卖的。。。

在新建的target中就可以选择自己独立的设置,如屏BundleID,幕旋转方向,app名称等,这样不同的target就区别开来

计算机生成了可选文字:TARGETS Document Types Exported UT's (O) Imported UT's (O) Bundle name Localized resources can be mixed Localization native development region Bundle version Bundle OS Type code 301Support Bundle versions string, short App Transport Security Settings nfoDictionary version Required device capabilities Executable file Supported interface orientations (ipad) View controller-based status bar app„ Bundle identifier Bundle creator OS Type code displayLockWhenBecomeActive Application requires iPhone environm... Supported Interface orientations Item O Item I Item 2 Bundle display name String Boolean String String String Boolean String Dictionary String Array String Array Boolean String String Boolean Coolean Array String String String String SIPRODUCT_NAME) YES 11.1717 APPL 38.1 (I item) (I item) NEXECUTABLE_NAME) (3 items) YES YES 3 Items Landscape (right home button) Portrait (bottom home button) Landscape (left home button)

最主要的,可以设置标记。在BuildSettingsPreprocessor Macros项目中可以设置标记。其效果相当于全局的#define xxxx,这样就可以在代码中通过#ifdef - #else - #end的方法来根据不同标记的target来执行不同的代码。如我们项目中有两个target,主要用于区分不同的服务器,一个测试服务器,一个正式服务器(因为不同服务器中的数据不同,正式服务器数据重要,测试起来危险,所以设置了测试服务器)。这样设置一个TESTMODEL的标记,DebugRelease都需要设置

计算机生成了可选文字:Language - pacsdoc_test Setting Ject•ve pacsdoc_test Yes v Yes v Yes v pacsdoc_test KMuItipIe values* C Yes v c Multiple values 5 O DEBUG-I TESTMODEL SD_WEBP SD WEBP TESTMO Enable Objective-C Exceptions mplicitly Link Objective-C Runtime Support Objective-C Automatic Reference Counting Apple LLVM 7.0 - Preprocessing Setting Enable Foundation Assertions Debug Rel ease Enable Strict Checking of obic_msgSend Calls Preprocessor Macros Release Preprocessor Macros Not used In Precompiled Headers DEBUG—I TESTMODEL D_WEÜ Apple LLVM 7.0 - Warning Policies Setting

然后在代码中就可以区分

计算机生成了可选文字:NSString #ifdef TESTYODEL return *else return #endif 2.3 + (NSString #ifdef TESTYODEL return *else return #endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值