您的位置:首页 > 移动开发 > IOS开发

ios Project和Targets配置

2018-02-23 14:27 351 查看
详解iOS ProjectTargets配置

project:project是所有文件、资源、信息/配置的repository。
一个project包含所有build your products所需的内容并且维护他们之间关系。
简单地说,target定义了project的编译设置,确定了project中各种资源和代码的编译顺序。每个target都唯一依赖于一个project,但是一个project中可以有多个targets
每一个的设置不同,但是同一时间里只有一个active Target,在编译时我们可以选择用哪一个target进行编译
一个Target和它的product可以和其他Target联系,如果一个target build需要另一个target的“输出”,可以说成第一个target依赖第二个。如果这俩个target在同一个workspace,Xcode会发现他们的依赖关系,从而build
the products按照特定的顺序。这样的关系被称为“ implicit dependency.”
你也可以为俩个targets指定明确的target
依赖关系在build setting里面。例如,你可能build一个library和一个链接这个library的application(同一个workspace)。Xcode可以发现这种关系并且自动build这个library
first。然而,你如果要去链接library的某个版本而不是one built in the workspace,你可以在build settings里创建一个确定的依赖关系,它将会覆盖implicit dependency。

projectinfo
Deployment Target部署配置:
主要是对本project的生成的App的可以运行的最低版本进行配置,默认是当前Xcode上API的最新版本,所以,在我们的项目中有需要对低版本适配的地方需要在这里设置。
Localizations:本地化,这里的功能主要是添加我们的App所支持的语言,通过上图最下面的红色圈内的【+】【-】按钮可以添加或删除不同的语种,并可以选择根据手机的设置进行不同语种的自适应。关于最下面的选择是否开启国际化,默认是开启的
Configurations:用来配置iOS项目的xcconfig文件,主要用于在几套不同的开发环境编译。xcconfig文件其实就是xcode里的config文件,本质是一个用来保存Build
Settings键值对的纯文本文件。这些键值对覆盖Build Settings中的值,所以当在xcconfig文件中配置了的选项,在Build Settings中设置将失效。我们在项目中一般不会进行xcconfig文件的自定义。

targetgeneral属性设置
Identify(标识符)栏主要定义了一些和应用发布有关的标识属性。
Display NameApp应用显示名):安装到iOS手机或iPad上App的名称。
Bundle Identifier(包标识符)是该应用的唯一ID,用来让操作系统和AppStore识别。在创建项目或者对象过程中Xcode就自行创建了包标识符,一般情况下不要修改它。 
Version(外部版本号)使用户能够看到的版本号。 
Build(内部版本号)开发者自己看到的版本号,以区分内部测试版本。 
Signing(签名)主要是进行证书管理,在真机调试或者打包时我们都需要进行签名进行认证才可以的。
Deployment Info(部署信息)定义了一些和应用配置相关的标识属性。 
Deployment Target(部署对象):用来设置支持的最低版本。这个和project的info中的一个意思,并且,这两个的设置最好是一样,如果不一样,最后的App会以target的设置为准。
Devices(设备):用来设置支持的设备,有iPhone、iPad和Universal三个选项。
Main Interface(主界面):应用启动时预加载的主界面视图。
通过 main.m 文件启动
通过代码的方式运行main.m的方法进行启动,并通过在AppDelegate的 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
方法中指定主界面视图进行启动。
一般项目中都是采用这种方法进行的,因为一般项目中界面比较多,很多都是通过纯代码的风格进行定义的,这样方便修改和定位问题,项目的逻辑也更清晰,特别是多人合作的项目,这种风格更适合。
通过Main.storyboard进行启动
设置这种方法需要我们整个项目的逻辑和跳转都在Main.storyboard中完成取消
Device Orientation(设备方向):定义应用支持的方向。
Status Bar Style(状态栏样式) hide status bar
全局隐藏状态栏 / requires full screen 
App Icons and Launch Images:应用图标和启动页面。主要设置三项:应用图标、启动图片和启动页面。
App icon Source(应用图标):对应着文件资源Assets.xcassets目录中的AppIcon中的图片
Luanch Image Source(启动图片):对应着文件资源Assets.xcassets目录中的LuanchImage中的图片
Luanch Screen File(启动页面文件):是一个storyboard文件,作用与Luanch Image一样,但是启动文件的优先级高于启动图片,就是说如果两个都设置了,那么启动页面以启动文件为准,如果都没有设置,则无法启动。
启动页面的作用:在我们点击应用图标启动应用时,应用启动需要一定的操作时间,在启动期间,为了增强应用程序启动时的用户体验,您应该提供一个启动图像。启动图像与应用程序的首屏幕看起来非常相似。当用户在主屏幕上点击您的应用程序图标时,iPhone OS会立即显示这个启动图像。一旦准备就绪,您的应用程序就会显示它的首屏幕,来替换掉这个启动占位图像。一定要强调的是,之所以提供启动图像,是为了改善用户体验,并不是为了提供:应用程序进入体验」,比如启动动画。
Embedded Binaries(绑定二进制文件):用来连接二进制文件,一般在使用第三方SDK的时候使用。 
 Linked Frameworks and Libraries(链接的框架和库):选择要链接的框架和库,既可以是SDK自带的框架,也可以是第三方框架,在Build Phases中也有类似的功能选项。

targetinfo属性设置
Custom iOS Target Properties自定义iOS目标属性
Localization native development region :
与本地化设置有关,为默认的开发语言 
Executable file:程序安装包的名称 
Bundle identifier:软件唯一的标识,是根据公司的标识与项目名称自动生成的,在上传和测试的时候会用到 I
nfoDictionary version:版本信息
Bundle name:App安装后显示的名称
Bundle OS Type code:用来标识软件包类型
Bundle versions string, short:发布的版本字符串 
Bundle creator OS Type code:创建者的标识 
Bundle version:应用程序版本号 
Application requires iPhone environment:用于指示程序包是否只能运行在iPhone OS
系统上,默认为YES 
Launch screen interface file base name:欢迎界面的文件名称 
Main storyboard file base name:默认情况下程序的主入口 
Supported interface orientations:设置程序默认支持的方向
Document Types 文档类型:定义了应用程序所能识别的文档类型,并且还可以定义在系统中显示的该类型文档的自定义图标。 
Exported UTIs 导出的UTI:UTI Uniform Type Identifiers同一类型标识符。
Imported UTIs 导入的UTI: 
URL Types URL类型:用来定义URL以便让应用程序理解应用间交换的数据结构。可用于:IOS唤醒其他程序,程序间相互调用。例如::在URLTypes中URLSchemes中组册AAPP;在B程序中,openUrl:[NSURL
urlWithString:@"AAPP:"];注意":"冒号,没有冒号是不能成唤醒另一个程序的。其次如果参数中有“&”特殊字符穿,建议对参数进行base64转换。

targetcapabilities属性设置
target的capabilities属性设置这一块主要是一些性能设置开关选择,例如推送通知、云存储、游戏中心、后台模式等,我们选择需要的开关进行打开或者关闭,这些相应的状态都会在info.plist中进行修改。所以,同样的,我们也可以在info.plist添加一些权限或性能开关之后,在target的capabilities中也会进行相应的修改的。

target中的Resource Tag属性设置
arget中的Resource Tag选项卡主要是为项目中的资源进行添加tag分类,方便我们对齐加载顺序和加载时机进行选择和设置,即实现按需加载,在需要的时候才加载资源

targetbuild setting属性设置
target的build setting选项卡的是最主要的一部分编译选项设置,每一项的配置都有四列,我们可以看到,从左至右的顺序分别是:Resolved列、带Target图标列、带Project图标列、iOS Default列。
Resolved:最终确定的编译方式,无法自己设定,其结果是根据其右边三栏的选择结果以及优先级顺序来确定最后编译时采用的编译方式。combined选项,可以直接地看到只有该栏的最后结果。
Target图标列:target的build setting配置的编译选项,可自定义。其优先级最高,一旦进行设置,则最后的编译方式以该栏的结果为准
Project图标列:project的build setting配置的编译选项,可自定义,这一栏的结果与project中build setting选项卡中的结果是一致的,修改其中一个地方,另一处也会自动修改。其优先级介于target和default之间,当target没有设置编译选项,而该栏进行了设置时,则最后的编译方式以该栏为准。
iOS Default:在创建项目时系统自带的默认编译选项,无法修改。优先级最低,只有当其他两栏都没有设置选项时,最后的编译方式才会以该栏为准。
优先级顺序:带Target图标列 >>
Project图标列 >> iOS Default列。
Architectures 架构

Additional SDKs
在编译的时候需要附加的SDK。
Architectures 支持的处理器架构。不同的处理器对应不同版本的iPhone。
Base SDK 这决定了你的app所能支持的iOS最高版本。如果你选择了iOS6.1,则你的app只能被iOS 6.1.X以下的系统安装。Xcode默认设置为能够支持的最新版本。
Build Active Architecture Only 如果此项为YES,则在Xcode会根据设备的版本只将相应的Architecture编译入app。如连接了iPhone4进行编译,Build
Active Architecture Only为YES,则编译时只会构建Armv7的二进制文件。若连接的是iPhone5,则构建出Armv7s的二进制文件。
这个选项在Debug时默认为YES,在Release时默认为NO。这使得Debug时编译的时间比Release快,更加方便调试。
Supported Platforms app所支持的平台,有iOS和OSX两个选项。
Valid Architectures app预期将要应用到的架构。默认与Architectures的值相同。这个选项让你可以在编译的时候只打包Armv7s架构,但是兼容Armv6,Armv7。
Build Locations

Build Products Path
产品文件和编译中间文件的根目录。产品文件和编译时临时文件都将放在这个目录的子目录中。
Intermediate Build Files Path 编译时临时文件的存放位置。编译中间文件格式为product name+.build,如MyProduct.build。
Per-configuration Build Product Path 当前编译设置下的产品存放位置。
Per-configuration Intermediate File Path 当前编译设置下编译时临时文件的存放位置。
Precompiled Headers Cache Path 存放预编译头文件的位置。通过这个配置,Targets可以互相共享预编译的头文件。
Build Options

Build Variants

此项可以设定生成产品的变种。您可以创建额外的产品变种作为特殊用途。例如,您可以使用编译配置文件的名称来创建一个高度定制的二进制文件。
Build Variants的值有三个:
normal-用于生成普通的二进制文件
profile-用于可以生成配置信息的二进制文件
debug-用于生成带有debug标志、额外断言和诊断代码的二进制文件
Compiler for C/C++/Object-C 选择使用的编译器。Xcode自带有两种选项,Apple LLVM和LLVM GCC。建议使用默认选项---Apple LLVM。
Debug Information Format 这个选项决定了记录debug信息的文件格式。选项有DWARF with dSYM File和DWARF。建议选择DWARF with dSYM File。DWARF是较老的文件格式,会在编译时将debug信息写在执行文件中。
Generate Profiling Code 是否生成配置代码。默认选择NO。
Precompiled Header Uses Files From Build Directory
预编译build路径中的头文件。由于编译过程比较耗时,且两次编译之间未必会改动所有文件。因此将不会改动的常用文件保留成预编译文件将大大减少编译时的时间。建议这一项选择YES。
Run Static Analyzer 运行静态分析器。
Scan All Source Files for Includes
扫描include文件所包含的所有源文件。
Validate Built Product 这个选项决定了是否在编译的时候进行验证。验证的内容和app store的审查内容一致。默认选项是debug时不验证,release时验证,这样就保证了每个release版本都会通过validate,让被拒的风险在提交app
store之前就暴露出来,减少损失。

targetbuild phase属性设置
target的build phase选项卡的的主要功能是配置编译器在不同编译阶段的参数,包括编译所需的资源文件(包括代码、配置以及各种资源文件)主要包括四方面
Target Dependencies Target对象依赖阶段:某些Target可能依赖某个Target输出的值,这里设置依赖。依赖于其他target的输出的时候,在编译时系统会自动先编译被依赖的target,得到输出值,再编译当前target。对象依赖阶段可以让Xcode知道必须在当前选择的对象编译之编译的其它依赖对象(比如应用扩展、插件等等)。这个阶段是无法被删除的。
Compile Sources 源文件编译阶段: 是指将有哪些源代码被编译,可以通过红框中的【+】【-】按钮进行添加或删除资源来控制编译的代码文件。并且可以通过修改改阶段的Compiler Flags(编译器标识)来为每个单独文件设置其编译器编织,比如优化设置等等。 
Link Binary With Libraries 链接二进制库阶段:是指编译过程中会引用哪些库文件,我们同样可以通过【+】【-】按钮进行添加或删除编译所引用的库文件。
Copy  Bundle Resources 复制资源文件阶段:是指生成的product的.app内将包含哪些资源文件,同样可以通过红框中的【+】【-】按钮进行添加或删除资源来控制编译的资源文件。该阶段定义了对象中的资源文件,包括应用程序、图标、界面构造器、视频、模板等等。这些资源都会被复制到安装包的Contents/Resources文件夹下。

原文参考地址 https://www.cnblogs.com/mukekeheart/p/8315229.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: