【iOS入门】xcode 功能学习 TARGET

本文做学习摘要。参考https://www.cnblogs.com/mukekeheart/p/8315229.html

一:PROJECT

【iOS入门】xcode 功能学习 TARGET

 

 1.Deployment Target   

  对本project的生成的App可运行的最低版本进行配置,默认是当前Xcode上API的最新版本。还可以在build setting中设置,两者是同步。

2.Localizations

  本地化设置,iOS国际化可单独学习。

3.Configurations

用来配置iOS项目的xcconfig文件,主要用于在几套不同的开发环境编译。xcconfig文件其实就是xcode里的config文件,本质是一个用来保存Build Settings键值对的纯文本文件。这些键值对覆盖Build Settings中的值,所以当在xcconfig文件中配置了的选项,在Build Settings中设置将失效。我们在项目中一般不会进行xcconfig文件的自定义。具体xcconfig文件是什么东东,大家可以查看:iOS之Xcconfig杂谈 。估计很多新入门的iOS开发对xcconfig文件都不是很熟悉(其实我也不是很了解。。。), 但是大家可能都用过Cocoapods, 其实Cocoapods的项目配置管理很多都是依赖xcconfig文件去实现的。所以在使用Cocoapods进行导包的项目中,我们通过打开.xcworkspace文件,我们会发现project-->info-->configutations下的都有对应的配置文件,而原先没有用Cocoapods配置的则没有相关的配置文件,具体区别如下图所示。

二:TARGETS

1.general

【iOS入门】xcode 功能学习 TARGET

 

 

2.1 Identify

  • Display Name(App应用显示名):安装到iOS手机或iPad上App的名称。
  • Bundle Identifier(包标识符)是该应用的唯一ID,用来让操作系统和AppStore识别。在创建项目或者对象过程中Xcode就自行创建了包标识符,一般情况下不要修改它。
  • Version(外部版本号)使用户能够看到的版本号。
  • Build(内部版本号)开发者自己看到的版本号,以区分内部测试版本。

2.2 Deployment Info

【iOS入门】xcode 功能学习 TARGET

 

 2.3 App Icons and Launch Images

  应用图标和启动页面。主要设置三项:应用图标、启动图片和启动页面。具体应用图标和启动页面的大小尺寸介绍见官网:Human Interface Guidelines

  • App icon Source(应用图标):对应着文件资源Assets.xcassets目录中的AppIcon中的图片,如下图所示。最右边的面板可以选择添加哪一种或哪几种设备上的图标,每一个型号的设备上的图标的尺寸是不同的。在中间有一个个的小格子,我们将所有切好的图标直接拖过来,他们会自动找到自己应该放在的格子里。这些小格子主要分为四类:
    • Notification:通知时的图标,类似有应用相关的推送消息时,有时候需要显示本应用的图标则会显示这个尺寸的
    • Spotlight:搜索小图标,当在Spotlight中输入应用名,搜索结果中出现该应用时的图标就是这个尺寸的,还有设置里的图标也是这个尺寸的。
    • App:这就是正常的App图标,安装好之后在桌面显示的,或者分享推荐时显示的应用也是这个尺寸的图标
    • App store:应用商店中的显示的图标
  • Luanch Image Source(启动图片):同样对应着文件资源Assets.xcassets目录中的LuanchImage中的图片,设定了各种情况下的启动图片,具体界面就不截图了,和Appicon一样,我们将所有切好的图标直接拖过来,他们会自动找到自己应该放在的格子里。启动图片实际上定义了应用启动后的界面大小,所以在不同机型中我们需要做好适配,见下面的【启动页面在屏幕适配中的作用】。一款App必须设定对应设备的启动图片,否则点开应用会是一片黑白。
  • Luanch Screen File(启动页面文件):是一个storyboard文件,作用与Luanch Image一样,但是启动文件的优先级高于启动图片,就是说如果两个都设置了,那么启动页面以启动文件为准,如果都没有设置,则无法启动
  • 启动页面的作用:在我们点击应用图标启动应用时,应用启动需要一定的操作时间,再启动期间,为了增强应用程序启动时的用户体验,您应该提供一个启动图像。启动图像与应用程序的首屏幕看起来非常相似。当用户在主屏幕上点击您的应用程序图标时,iPhone OS会立即显示这个启动图像。一旦准备就绪,您的应用程序就会显示它的首屏幕,来替换掉这个启动占位图像。一定要强调的是,之所以提供启动图像,是为了改善用户体验,并不是为了提供:应用程序进入体验」,比如启动动画。
  • 启动页面在屏幕适配中的作用:每个机型,比如同时支持iPhone和iPad的程序,需要分别为iPhone跟iPad指定启动图片。当旧的iPhone 4的程序,运行在iPhone 5上面,没有iPhone 5的启动图片,就采用兼容模式,上下留黑边。当为iPhone 5指定了新的启动图片,系统就认为这个应用程序是已经适配了iPhone 5的。当旧的iPhone 5程序运行在iPhone 6上面,假如没有经过适配。旧程序自动等比放大,铺满新手机,旧程序也可以正常运行。这种方案可算是自动适配。但因为旧程序拉伸了,整体看起来有点虚,也不能更好利用大屏空间。当需要开发者手动适配的时候,跟iPhone 4过渡到iPhone 5一样,在新程序中,指定一张新的启动图片。当指定了启动图,系统就认为应用已经做好了屏幕适配,屏幕分辨率就变成应有的大小。在某机型上,如果是自动适配,比如iPhone 5,老版程序就会在屏幕上、下俩端多出俩块黑条;比如iPhone6/6plus,老版程序就会自动等比拉伸。那如何关闭自动适配?指定启动图或者使用Launch Screen File.xib,即程序使用手动适配,不会做拉伸等,但是程序内部必须已做处理,否则使用自动适配方案

2.4

【iOS入门】xcode 功能学习 TARGET 

  在真机运行,如果出现错误“dyld: Library not loaded: @rpath/XX.framework/XX,..... Reason: image not found”

  • 这是因为framework没拷贝到ipa里面,导致运行是找不到库,需要在General->Frameworks and Embedded Content中将framework设置为“Embed & Sign”

2.5 Development Assets

【iOS入门】xcode 功能学习 TARGET

Xcode 11 为 Previews 提供了 Development Assets,这里面的资源不会被打包到最终的 Release 版本中。这对我们在开发前期制作一些快速原型非常有帮助。该配置项位于 Targets -> General -> Development Assets。

3. info 

  • Localization native development region : 与本地化设置有关,为默认的开发语言
  • Executable file:程序安装包的名称
  • Bundle identifier:软件唯一的标识,是根据公司的标识与项目名称自动生成的,在上传和测试的时候会用到
  • InfoDictionary 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:设置程序默认支持的方向

 除此之外,我们在开发过程可能还需要添加一些其他的信息,包括一些权限的添加,网络权限、定位权限、读写联系*限等等,应用白名单的添加等都是在这里进行配置的。关于info.plist的具体信息和内容详情参见:Xcode中的Info.plist字段列表详解

  另外四部分的简单解释:

  • 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转换。

3.2 target的capabilities属性设置

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

 4. Resource Tag

  target中的Resource Tag选项卡主要是为项目中的资源进行添加tag分类,方便我们对齐加载顺序和加载时机进行选择和设置,即实现按需加载,在需要的时候才加载资源,属性设置界面如下图所示。这样做的好处就是可以实现如下几种资源加载形式:

  • 初始资源的延迟加载:app有一些资源是主要功能要用到的,但在启动时并不需要。将这些资源标记为“初始需要”。操作系统在app启动时会自动下载这些资源。例如,图片编辑app有许多不常用的滤镜。
  • app资源的延迟加载:app有一些只在特定情景下使用的资源,当应用可能要进入这些场景时,会请求这些资源。例如,在一个有很多关卡的游戏中,用户只需要当前关卡和下一关卡的资源。
  • 不常用资源的远程存储:app有一些很少使用的资源,当需要这些资源时会去请求它们。例如,当app第一次打开时会展示一个教程,而这个教程之后就可能不会在用到。app在第一次启动时请求教程的资源,这之后只在需要展示教程或者添加了新功能才去请求该资源。
  • 应用内购买资源的远程存储:app提供包含额外资源的应用内购买。app会在启动完成后请求已购买模块的资源。例如,用户在一个键盘app内购买了SuperGeeky表情包。应用程序会在启动完成后请求表情包的资源。
  • 第一次启动时必需资源的加载:app有一些资源只在第一次启动时需要,之后的启动不再需要。例如,app有一个只在第一次启动时展示的教程。

 

5. target的build phase属性设置

  target的build phase选项卡的的主要功能是配置编译器在不同编译阶段的参数,包括编译所需的资源文件(包括代码、配置以及各种资源文件),配置界面如下图所示,主要包括四方面的内容。

【iOS入门】xcode 功能学习 TARGET

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

【iOS入门】xcode 功能学习 TARGET

上一篇:android 动画基础绘——view 动画(二)[补]


下一篇:Android记账本开发(二):实现注册登录功能