让iOS应用支持不同版本的系统与设备

最近一直在做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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
源码FLEX,FLEX(Flipboard Explorer)是Flipboard官方发布的一组专门用于iOS开发的应用内调试工具,其主要开发者为Flipboard公司旗下的iOS工程师Ryan Olson。和许多调试工具不同的是,FLEX不仅能在模拟器和物理设备上良好运作,而且还可直接在App中运行,开发者无需将其连接到LLDB/Xcode或其他远程调试服务器。在调用FLEX时,应用窗口会显示一个工具栏,而在这个工具栏中,开发者可以对正在运行中的App的每一处状态进行查看或修改。 主要特性如下: 在层级中检查和修改视图; 可查看任意对象的属性和变量,并支持动态调整; 动态调用实例和类方法; 支持通过扫描堆来访问活动对象; 可在应用沙盒中查看文件系统; 直接在应用中检测所有类,以及链接的所有公、私有系统框架; 可快速访问[UIApplication sharedApplication]、应用委托以及关键窗口上的根视图控制器等所有可用对象; 支持动态查看和编辑NSUserDefaults值。 FLEX的使用方法也非常简单,在Github上,Flipboard详细列举了精简和完整两个版本的使用代码: 精简用法: //short version [[FLEXManager sharedManager] showExplorer]; 完整用法: //more complete version #if DEBUG #import "FLEXManager.h" #endif ... - (void)handleSixFingerQuadrupleTap:(UITapGestureRecognizer *)tapRecognizer { #if DEBUG if (tapRecognizer.state == UIGestureRecognizerStateRecognized) { // This could also live in a handler for a keyboard shortcut, debug menu item, etc. [[FLEXManager sharedManager] showExplorer]; } #endif }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值