本文转载至  http://blog.csdn.net/pucker/article/details/11980811

最近一直在做app的iOS 6和7的同时适配工作,所以在此介绍一下系统与设备的兼容问题。

一、Base SDK与Deployment Target

一个项目(Project)可以有多个目标(Target),每个目标可以指定不同的设置(例如支持不同的系统版本,引用不同的Framework等)。项目设置会覆盖默认设置,而每个目标的设置则会覆盖项目设置。在Xcode的项目浏览窗口中点击项目,在TARGETS中选择某个目标,即可在右侧的“Build Settings”中看到默认设置、项目设置、所选目标设置与最终的设置值。

其中Base SDK指的是用哪个版本的SDK来编译、链接项目源代码。一般来讲Base SDK选择当前Xcode支持的最高版本的SDK(Latest iOS SDK)来编译链接项目工程,这样就可以获得最新的SDK中提供的新功能。

另一个设置是Deployment Target,它指的是能够支持目标正确运行的最低系统版本。默认情况下,Xcode会将该值设置为Base SDK中指定的值,但可以手动修改该值以支持老的系统和设备。你不可以用低于Deployment Target指定的版本的模拟器或者真机来运行和打包app。

例如,当使用Xcode 5打开某个项目时,Base SDK为7.0,也就是用7.0的SDK来编译链接项目app。如果这个app只想支持iOS 7系统,则Deployment Target可以设置为7.0。如果你的app还想兼容iOS 6或者更早版本,则应把Deployment Target置为要支持的最低的系统版本号。由此可知,Deployment Target一定小于等于Base SDK。

注意,因为此时是用最新的SDK生成app,但却允许在早期版本的系统上运行,所以此时开发者要确认在旧系统上运行app时不能调用那些新的SDK中添加的功能,否则会在运行时出错导致app闪退。下面就介绍一下如何确保app能够在旧的系统上正确运行。

二、适配旧系统时的注意事项

app在旧的系统上运行的过程中,可能会使用系统未提供的常量、变量、C函数、类、类的方法,也可能会调用不存在的Framework中的功能。对于Xcode4.6.3及更早版本,程序可以编译通过,但运行时闪退。Xcode 5则进行了很大改进,如果代码中出现了上述情况,直接给出警告和错误。

未完待续。

更多 0

 
-

让iOS应用支持不同版本的系统与设备的更多相关文章

  1. [置顶] 新修改ADB,支持Android 4.2 系统 ,全部中文命令,手机屏幕截图等等

    发过好几个ADB的工具,有很多朋友用了之后给我反馈了不少的意见和bug,这里非常感谢他们,所以今天花了一天的时间重新整理了一下ADB,并且修改了这些BUG.也有朋友建议我给一个修改列表,今天发这个帖子 ...

  2. wzplayer for ios 针对(mms)优化版本V1.0

    wzplayer for ios针对mms优化版本发布. 1.支持mms,http,rtmp,rtsp等协议 2.支持全格式 下载地址:http://www.coolradio.cn/WzPlayer ...

  3. gshop.data 编辑器通杀版本 支持146-151版本

    EXE下载:http://files.cnblogs.com/xe2011/EXEgshop.dataeditorV1.42014-3-11-204242.7z C#:http://files.cnb ...

  4. Swift - 项目部署配置(支持的系统,设备和状态条样式等)

    点击项目,在General选项卡中的“Deployment Info”栏目中可以进行一些项目的配置 Deployment Target:支持的iOS SDK的最低版本 Device:所支持的设备(iP ...

  5. iOS 不支持 PWA,那又怎么样?

    原文链接http://www.zcfy.cc/article/ios-doesn-8217-t-support-progressive-web-apps-so-what-cloud-four-3400 ...

  6. cocos2d-x v2.2 IOS工程支持64-bit 遇坑记录

    修改缘由 由于 iPhone 5S的A7 CPU   iPhone 6(A8 CPU)都已经支持64-bit ARM 架构,据说64位处理器跑64代码会提高处理能力?因此二月一新提交appstore应 ...

  7. 微信团队原创分享:iOS版微信的内存监控系统技术实践

    本文来自微信开发团队yangyang的技术分享. 一.前言 FOOM(Foreground Out Of Memory),是指App在前台因消耗内存过多引起系统强杀.对用户而言,表现跟crash一样. ...

  8. pycharm2020.2破解版教程激活码支持Windows Linux Mac系统-中关村老大爷

    听说很多朋友想要PyCharm专业版2020.2的破解教程.现在来了,亲测破解成功.支持mac linux windows系统.本教程提供官方安装包.激活码和注册补丁. 本教程仅供学习和讨论,禁止商业 ...

  9. 让PDF.NET支持不同版本的SQL Server Compact数据库

    最近项目中需要用到嵌入式数据库,我们选用的数据开发框架是PDF.NET(http://www.pwmis.com/SqlMap/),之前的博文已经总结了让PDF.NET支持最新的SQLite,今天我们 ...

随机推荐

  1. python --标准库 路径与文件 (os.path包, glob包)

    os.path包 os.path包主要是处理路径字符串,提取出有用信息. #coding:utf-8 import os.path path = 'D:\\Python7\\test\\data.tx ...

  2. spi flash偶尔出现写入错误的情况

    spi flash W25Q128会偶尔出现写入错误的情况,会发现读出的值和写入的值不一致,需加入2次读出比较判断. W25QXX_Read(&temp_date_count,0x000000 ...

  3. 使用Sigar获取服务器信息

    Sigar简介 Sigar是Hyperic-hq产品的基础包,是Hyperic HQ主要的数据收集组件.它用来从许多平台收集系统和处理信息. 这些平台包括:Linux, Windows, Solari ...

  4. utubu远程

    http://www.linuxidc.com/Linux/2014-04/100491.htm 首先安装xfce: sudo apt-get update sudo apt-get install ...

  5. java工程资源文件夹嵌套建立!

    做过一遍忘了,找了半天!记这里,看你还忘不忘!

  6. location 符号

    元字符 描述 \ 将下一个字符标记符.或一个向后引用.或一个八进制转义符.例如,“\\n”匹配\n.“\n”匹配换行符.序列“\\”匹配“\”而“\(”则匹配“(”.即相当于多种编程语言中都有的“转义 ...

  7. html中iframe子页面与父页面元素的访问以及js变量的访问

    1.子页面访问父页面元素   parent.document.getElementById('id')和document相关的方法都可以这样用   2.父页面访问子页面元素   document.ge ...

  8. Centos Java 从1.7升级为1.8

    查看安装的sdk版本 yum list installed |grep java 卸载JDK相关文件输入和tzdata-java输入 yum -y remove java-1.7.0-openjdk* ...

  9. MacBook Air 2014 安装win7

    1.准备一个4G以上容量USB3.0 U盘.制作一个带USB3.0驱动的win7 2.将制作好的win7iso镜像文件复制到macbook上,插上U盘,运行Boot Camp助理: 3.选择默认勾选项 ...

  10. Python异常处理try...except...finally raise assert

    异常处理:try ...except  try代码块放置容易发生异常的语句:except代码块放置处理异常的语句try ...except...finally finally代码快是任何时候都会执行的 ...