详解iOS ProjectTargets配置

projectproject是所有文件、资源、信息/配置的repository

一个project包含所有build your products所需的内容并且维护他们之间关系。

简单地说,target定义了project的编译设置,确定了project中各种资源和代码的编译顺序。每个target都唯一依赖于一个project,但是一个project中可以有多个targets

每一个的设置不同,但是同一时间里只有一个active Target,在编译时我们可以选择用哪一个target进行编译

一个Target和它的product可以和其他Target联系,如果一个target build需要另一个target的“输出”,可以说成第一个target依赖第二个。如果这俩个target在同一个workspaceXcode会发现他们的依赖关系,从而build the products按照特定的顺序。这样的关系被称为“ implicit dependency. 你也可以为俩个targets指定明确的target 依赖关系在build setting里面。例如,你可能build一个library和一个链接这个libraryapplication(同一个workspace)。Xcode可以发现这种关系并且自动build这个library first。然而,你如果要去链接library的某个版本而不是one built in the workspace,你可以在build settings里创建一个确定的依赖关系,它将会覆盖implicit dependency

projectinfo

Deployment Target部署配置: 主要是对本project的生成的App的可以运行的最低版本进行配置,默认是当前XcodeAPI的最新版本,所以,在我们的项目中有需要对低版本适配的地方需要在这里设置。

Localizations:本地化,这里的功能主要是添加我们的App所支持的语言,通过上图最下面的红色圈内的【+】【-】按钮可以添加或删除不同的语种,并可以选择根据手机的设置进行不同语种的自适应。关于最下面的选择是否开启国际化,默认是开启的

Configurations:用来配置iOS项目的xcconfig文件,主要用于在几套不同的开发环境编译。xcconfig文件其实就是xcode里的config文件,本质是一个用来保存Build Settings键值对的纯文本文件。这些键值对覆盖Build Settings中的值,所以当在xcconfig文件中配置了的选项,在Build Settings中设置将失效。我们在项目中一般不会进行xcconfig文件的自定义。

targetgeneral属性设置

Identify(标识符)栏主要定义了一些和应用发布有关的标识属性。

Display NameApp应用显示名):安装到iOS手机或iPadApp的名称。

Bundle Identifier(包标识符)是该应用的唯一ID,用来让操作系统和AppStore识别。在创建项目或者对象过程中Xcode就自行创建了包标识符,一般情况下不要修改它。

Version(外部版本号)使用户能够看到的版本号。

Build(内部版本号)开发者自己看到的版本号,以区分内部测试版本。

Signing(签名)主要是进行证书管理,在真机调试或者打包时我们都需要进行签名进行认证才可以的。

Deployment Info(部署信息)定义了一些和应用配置相关的标识属性。

Deployment Target(部署对象):用来设置支持的最低版本。这个和projectinfo中的一个意思,并且,这两个的设置最好是一样,如果不一样,最后的App会以target的设置为准。

Devices(设备):用来设置支持的设备,有iPhoneiPadUniversal三个选项。

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 nameApp安装后显示的名称

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 导出的UTIUTI Uniform Type Identifiers同一类型标识符。

Imported UTIs 导入的UTI

URL Types URL类型:用来定义URL以便让应用程序理解应用间交换的数据结构。可用于:IOS唤醒其他程序,程序间相互调用。例如::URLTypesURLSchemes中组册AAPP;在B程序中,openUrl:[NSURL urlWithString:@"AAPP:"];注意":"冒号,没有冒号是不能成唤醒另一个程序的。其次如果参数中有“&”特殊字符穿,建议对参数进行base64转换。

targetcapabilities属性设置

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

target中的Resource Tag属性设置

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

targetbuild setting属性设置

targetbuild setting选项卡的是最主要的一部分编译选项设置,每一项的配置都有四列,我们可以看到,从左至右的顺序分别是:Resolved列、带Target图标列、带Project图标列、iOS Default列。

Resolved:最终确定的编译方式,无法自己设定,其结果是根据其右边三栏的选择结果以及优先级顺序来确定最后编译时采用的编译方式。combined选项,可以直接地看到只有该栏的最后结果。

Target图标列targetbuild setting配置的编译选项,可自定义。其优先级最高,一旦进行设置,则最后的编译方式以该栏的结果为准

Project图标列projectbuild setting配置的编译选项,可自定义,这一栏的结果与projectbuild setting选项卡中的结果是一致的,修改其中一个地方,另一处也会自动修改。其优先级介于targetdefault之间,当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 OnlyYES,则编译时只会构建Armv7的二进制文件。若连接的是iPhone5,则构建出Armv7s的二进制文件。

这个选项在Debug时默认为YES,在Release时默认为NO。这使得Debug时编译的时间比Release快,更加方便调试。

Supported Platforms app所支持的平台,有iOSOSX两个选项。

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 LLVMLLVM GCC。建议使用默认选项---Apple LLVM

Debug Information Format 这个选项决定了记录debug信息的文件格式。选项有DWARF with dSYM FileDWARF。建议选择DWARF with dSYM FileDWARF是较老的文件格式,会在编译时将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属性设置

targetbuild phase选项卡的的主要功能是配置编译器在不同编译阶段的参数,包括编译所需的资源文件(包括代码、配置以及各种资源文件)主要包括四方面Target Dependencies Target对象依赖阶段:某些Target可能依赖某个Target输出的值,这里设置依赖。依赖于其他target的输出的时候,在编译时系统会自动先编译被依赖的target,得到输出值,再编译当前target。对象依赖阶段可以让Xcode知道必须在当前选择的对象编译之编译的其它依赖对象(比如应用扩展、插件等等)。这个阶段是无法被删除的。

Compile Sources 源文件编译阶段:是指将有哪些源代码被编译,可以通过红框中的【+】【-】按钮进行添加或删除资源来控制编译的代码文件。并且可以通过修改改阶段的Compiler Flags(编译器标识)来为每个单独文件设置其编译器编织,比如优化设置等等。

Link Binary With Libraries 链接二进制库阶段:是指编译过程中会引用哪些库文件,我们同样可以通过【+】【-】按钮进行添加或删除编译所引用的库文件。

Copy  Bundle Resources 复制资源文件阶段:是指生成的product.app内将包含哪些资源文件,同样可以通过红框中的【+】【-】按钮进行添加或删除资源来控制编译的资源文件。该阶段定义了对象中的资源文件,包括应用程序、图标、界面构造器、视频、模板等等。这些资源都会被复制到安装包的ContentsResources文件夹下。

原文参考地址 https://www.cnblogs.com/mukekeheart/p/8315229.html

ios Project和Targets配置相关推荐

  1. 剖析基于IOS的华为交换机配置口令设置

    From:http://network.51cto.com/art/201001/175116.htm 剖析基于IOS的华为交换机配置口令设置,如何设置华为交换机配置口令,网络上有不少的方法,下面是设 ...

  2. Project Server 2003配置部署指南_百度文库

    Project Server 2003配置部署指南_百度文库 Project server 2003配置部署指南 - 网管地带 - IT博客

  3. uniapp ios app离线打包 - 配置

    前言 进行UniApp 离线打包之前, 建议先认真阅读一遍官方的开发文档.真正阅读过了,可以少踩很多坑.本文介绍离线打包前的准备及iOS工程的一些配置和需要注意的事项. 官方文档: App离线打包 i ...

  4. ios平台alternate icon配置注意事项

    文章目录 ios平台alternate icon配置注意事项 第一步,将icon文件导入xcode项目 问题1:提审时因为缺少关键尺寸导致提审失败 问题2:文件名重复,导致build失败 问题3:io ...

  5. iOS 项目开发常用配置

    iOS 9   https适配http在info.plist中配置NSAppTransportSecurity  类型为字典 包含有一个对象为: (NSAllowsArbitraryLoadsbool ...

  6. iOS中 Bugly iOS 符号表手动配置详细教程 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博!iOS开发者交流QQ群: 446310206 官方教程 官方的符号表工具iOS文档版­使用指南不是很详细,于是自己动 ...

  7. iOS APP发布---版本配置完整流程

    app打包发布需要在Xcode上完成打包上传过程.Xcode端完成上传之后,再在App Store Connect端完成构建版本.上架审核.发布提交的流程. 其他相关文档如下,操作仅供参考. 苹果开发 ...

  8. charles ios设备 https代理配置

    首先需要在Mac上打开Charles,并启动代理,完成了一系列配置后,能正常监听流量了以后,再进行下面操作(配置电脑证书等). PC端Charles设置,可以参考我另外一篇文章https://segm ...

  9. 2022 Delphi 11开发苹果IOS证书等详细配置流程(最新)

    假设条件:已经有苹果开发者账号(如果没有,请先注册好苹果开发者账号) 开发环境: 名称 版本 开发机(虚拟PC)操作系统 windows 10(Version 21H2 64位) MAC系统(inte ...

最新文章

  1. WinRAR也能实现智能备份
  2. python网络爬虫之yield关键字的使用!
  3. 上海交大张拳石:漂在零丁洋里的体系,神经网络的博弈交互解释性
  4. pytorch 归一化与反归一化
  5. 意料之外,也是情理之中 - 我的自由职业之旅
  6. Linux小细节-1
  7. 记一次小型生产事故 | BeyondComper跨编码方式复制文件内容
  8. HDU 3549 Flow Problem
  9. collect的功能是什么?其底层如何实现的?_为什么你要用 Spring ?
  10. UITableView 系列三 :分类显示和改变外观 (实例)
  11. Git:操作报错:fatal: ‘origin‘ does not appear to be a git repository解决方案
  12. python使用sax实现xml解析
  13. oppor829t如何刷机_OPPO R829T卡刷刷机图文教程
  14. 计算机故障基本维修方法,11种打印机常见故障维修方法
  15. 中国电信物联网开放平台对接历程
  16. 微信语音(录音,上传,下载,播放,停止)
  17. 个人卖云服务器需要什么证,云服务器个人使用能做什么 云服务器要不要个人认证...
  18. CCF-CSP—2017.12.—4 行车路线(spfa) 题解
  19. 从零维到十维空间如何在纸上用手绘出来
  20. 猿创征文丨深度学习基于双向LSTM模型完成文本分类任务

热门文章

  1. CVPR,2018,THP-Towards High Performance Video Object Detection面向高性能的视频目标检测
  2. 关于二维码,你知道多少?
  3. 压力传感器的误差构成及减小误差办法
  4. ArcGIS Pro脚本工具(4)——连续擦除
  5. 城轨交通系统中智能化管理的作用分析
  6. webview 无法调用uni_哥哥教你解决WebView无法打开网页的问题
  7. FlexTime——Mac计时器工具小帮手!
  8. 第二次作业-team5
  9. 深度强化学习应用实践技巧
  10. 2014年11月19日