当Jobs宣称“iPhone SDK提供的是和苹果内部开发人员使用的相同的工具”时,他显然忘了在iPhone SDK发布之前几个月,就有人开始使用开源的Open Tool Chain工具进行iPhone软件的开发了。

 

官 方发布的iPhone SDK显然并非他们内部开发人员使用的工具,因为官方发布的SDK附加了相当多的限制:开发者必须付99美金获取代码签名、程序无法在后台运行(著名的经 常被人骂的One App at a Time)以及无法使用很多低级的API等等。虽然苹果宣称这种做法是为了提高安全性以及让开发者开发过程更简便快捷,但是无疑这也同样是被开发者诟病的 问题所在。

 

本文比较了官方iPhone SDK和开源工具链的区别以及与iPhone相关的一些数据分析,以便国内开发者更好地进行iPhone软件的开发。

 

如果你想为国内的用户开发一些基于iPhone的有用的应用软件,本文帮你分析了官方iPhone SDK和开源的工具链的区别,还帮你简单地分析了一下iPhone的市场及预测,以做为你进行iPhone开发前选择项目以及选择开发环境的参考,推荐阅读。

 

 

如果您想转载本文,请务必先联系本站(http://www.cocoachina.com)。

 

API比较

 

iPhone有两层不同的框架,分别是底层API和iPhone SDK。

 

底层API就是我们在iPhone 1.0和1.1中使用的“开源工具链”,苹果虽然自己在iPhone内置的软件中一直在使用这部分API,但是并没有在官方发布的SDK中附带这些API的定义。这部分API直接和底层的框架运行库对话。

 

“开源工具链”叫做“Open Source Toolchain”,是一些***及苹果爱好者通过对iPhone进行破解及修改,开发出的一套开发工具。这批***中的领军人物叫做Jonathan Zdziarski (http://www.zdziarski.com/) ,他开发了第一个iPhone上的任天堂红白机模拟器。

 

苹 果官方发布的iPhone SDK则将这部分底层API进行了包装,用户的程序只能和苹果提供的iPhone SDK中定义的类进行对话,而这些类再和底层的API进行对话。最明显的例子就是OpenGL ES,苹果官方发布的iPhone SDK中的OpenGL ES实际是和底层API中CoreSurface这个框架进行对话,来实现渲染功能。

 

苹果官方发布的iPhone SDK对底层API进行了很大的限制。官方的SDK是在某些底层API之上增加了一层针对开发者的类库,供开发者使用,而开源工具链则是使用class-dump (http://www.codethecode.com/projects/class-dump/) 等工具直接将iPhone手机中所有框架的类定义、分类和协议直接抠出来,这样开发者就可以通过抠出来的头文件定义直接与iPhone中的所有框架库进行对话。

 

官方的iPhone SDK和开源工具链的API定义大概有75%是相同的,而另外的25%左右则是苹果不希望开发者使用的比较底层的API。这样,通过一些修改,这两者的代码在某些级别上是可以互相兼容的。

 

进 行iPhone破解的开发者一直致力于试图将这两者结合起来。经过他们的一些辛勤努力,通过在官方SDK中增加工具链头文件定义的方法,目前使用过去 1.x工具链开发的iPhone软件,已经可以仅仅进行一些非常微小的修改,就可以在官方的SDK中编译通过了。主要的原因是苹果虽然一直在不断地修改官 方的SDK,但是对于底层API的修改确是非常的小,而由于工具链直接调用底层API,因此只要官方的SDK“认识”这些API的定义,就可以直接使用。

 

优缺点比较

 

 

开源工具链的优点:可以开发几乎一切苹果官方iPhone SDK能做的和不能做的程序;开发平台无限制:Leopard之前的版本、Windows、Linux都可以。

 

开源工具链的缺点:开发起来有点麻烦;目前不能使用Interface Builder制作界面;环境搭建相对麻烦。

 

苹 果官方iPhone SDK的缺点:CoreSurface(硬件显示设备)、Celestial(硬件音频设备)以及其他几乎所有和硬件相关的处理无法实现;无法开发后台运 行的程序;需要代码签名才能够在真机调试;只能在Leopard 10.5.2以上版本、Inter Mac机器进行开发。

 

苹 果官方iPhone SDK的优点:开发环境几乎和开发Mac软件一样:一样的XCode、Interface Builder、Instruments工具;最新版本的iPhone SDK可以使用Interface Builder制作界面;环境搭建非常容易;需要代码签名以避免恶意软件。

 

软件分发比较

 

使用开源工具链开发的软件使用一个第三方工具:Installer进行发布。软件开发者可以自己将软件上传到自己网站,用户可以在iPhone上直接通过Wifi下载安装软件。开发者无需经过苹果认可即可在任意网站发布软件。

 

使用官方iPhone SDK开发的软件需要经过苹果的认可,即可发布在苹果未来内置在iPhone中的App Store程序中。用户可以通过App Store直接下载或通过iTunes下载软件并安装到iPhone中。

 

iPhone相关数据

 

接下来介绍一些关于iPhone的数据供国内的iPhone开发者参考,这些数据并没有经过Cocoachina严格的调研,因此请不要将本文转载至其他网站或媒体。这里的数据仅供Cocoachina的读者参考:

 

1 几个重要日期:(苹果从来都在周二发布新产品)

 

2007年6月:iPhone正式发布。

2007年8月:iPhone被破解,开源工具链发布。

2008年3月7日:官方iPhone SDK发布Beta 1,当月又发布了Beta 2。

2008年4月9日:官方iPhone SDK发布Beta 3,同时发布iPhone OS 2.0 Beta3。