让茶叶阅读开始

作为一名苹果观察员,最好的一点是,即使苹果做出了期待已久的声明,它不可避免地导致了关于它们确切含义的新问题。苹果专家是克里姆林学科技世界。

就是这样本周史蒂夫·乔布斯的声明那,对,“我们希望在iPhone上使用本机第三方应用程序,我们计划在2月份让开发人员掌握一个SDK。”

我们现在知道了两个新的东西:(1)将有“本地第三方应用程序在iPhone上”;(2)SDK计划在2月份发布。这会留下一长串问题。

小部件在哪里?

首先:什么是“本地第三方应用程序”?显而易见的答案是,过去两个月来,地下的iPhone黑客一直在开发基于uikit的可可应用程序,这正是苹果为iPhone和iPod touch编写的本地应用程序。

就我们目前所知,尽管如此,它可能更像仪表板小部件——但我认为这不太可能。

乔布斯写道:

我们革命性的多点触控界面,强大的硬件和高级软件架构,我们相信我们已经为开发者创造了有史以来最好的移动平台。

JavaScriptHTMLCSS很酷,因为它们被广泛使用,广为人知的编码标准——但它们不是创造充分利用iPhone的用户体验的好方法,对于苹果来说,作为“本地应用程序”的软件开发工具包很难被忽略。第三方开发者希望能接触到苹果自己的iPhone工程师正在吃的狗食。

另外,这是性能问题。图标工厂开发商Craig Hockenberry,他一直在修补非官方的iPhone开发工具,以创建iPhone本地版本叽叽喳喳的,写了一篇精彩的日志题为在裤子里做基准测试“与在原生iPhone应用程序中运行的编译的Objective-C代码相比,在MobileSafari中运行的javascript代码的性能比较差。函数调用,例如,在javascript中慢了226倍。(与在基于Intel的iMac上运行Safari的相同代码相比,Hockenberry还将iphone上运行的javascript作为基准;在iMac上,代码运行速度快了80倍。)

早在一月份苹果在Macworld Expo主题演讲中推出iPhone时,乔布斯描述了iPhone上的一些应用程序,包括天气和股票,作为“小部件”。我有点见多识广的理解是,苹果最初的计划是将iPhone与其用Cocoa编写的主要应用程序一起发布,并将一些较小的应用程序作为仪表板样式的HTML/CSS/javascript小部件进行发布,但由于性能原因,这一计划遭到挫败,天气和库存小部件在今年春天的某个时候被改写为uikit objective-c应用程序。我的猜测是他们碰到了霍肯伯里记录的:当前iPhone上的javascript速度不够快,无法提供iPhone级的用户体验。

所以我的钱是苹果计划在今年冬天发布的iPhone SDK才是真正的东西——用Objective-C编写的可可风格的uikit应用程序。

安全?

乔布斯写道:

发布一个SDK需要到2月份,因为我们试图同时做两件完全相反的事情,为开发者提供一个先进的开放平台,同时保护用户免受病毒的侵害,恶意软件,隐私攻击,等。这不是件容易的事。有人声称,病毒和恶意软件在手机上是不合适的,这完全是不正确的。其他手机上已经出现了一些病毒,包括一些通过手机网络在电话间无声传播的信息。阿索的手机变得更强大,这些恶意程序将变得更加危险。既然iPhone是有史以来最先进的手机,它将是一个高度可见的目标。

外部安全——漏洞的威胁,允许不法分子危害受害者的iPhone——是一个严重的问题。已经有几次针对iPhone的公开攻击,包括本书中的TIFF处理代码中存在打开漏洞在当前的iPhone操作系统中。

很明显,乔布斯所说的安全问题有一些好处。在当前的iPhone操作系统中,所有进程都作为根用户运行;从广义上讲,任何进程都可以访问电话上的所有其他内容。因此,当可以利用缓冲区溢出来允许远程代码执行时,这个代码可以做任何事情。允许第三方iPhone应用程序在今天运行,就是要相信这些第三方开发人员不会编写有任何安全缺陷的代码。

在苹果允许第三方应用程序运行之前,iPhone需要的是某种沙盒,一种防止应用程序进程能够访问不应允许访问的内容的方法。但iPhone Cocoa应用程序与Mac Cocoa应用程序相比,在本质上不易受到缓冲区溢出漏洞的影响。

以及歇斯底里症在iPhone当前的“一切都以根为单位运行”的情况下,这是言过其实的。Mac上的应用程序不以根用户身份运行;它们在您的用户帐户下运行。但是你所有的数据-你的电子邮件,你的通讯录,您的文档,您的应用程序在没有管理员身份验证的情况下可以读取或写入的所有内容-都容易受到Mac上任何类型的假设缓冲区溢出攻击,在iPhone上,同样,即使iPhone应用程序并非都以根用户身份运行。当然,根权限允许利用漏洞任何东西,但在你的系统中最重要的是你的个人数据,而一个漏洞不需要根权限来访问它。

我想苹果更关心内部的安全性——关于将第三方应用程序限制在沙盒中,这样用户安装的代码就不能访问类似的东西,说,电话网络调制解调器的固件(创建SIM解锁时需要使用的组件)。这就是iPhone和Mac的关键区别,安全方面。

哪些第三方开发人员?

Mac OS X对开发几乎完全开放;即使是开发人员工具也是免费的,任何人都可以自由地为Mac编写他们想要的任何软件。iPhoneOSX的开发似乎不太可能是这样。

一种可能是iPhone SDK仅对模数转换器选择($499)或首发($3499)帐户。(Premier和Select ADC成员是唯一可以访问预发布Mac OS X种子的成员,例如)如果是这样的话,它不会受到业余开发者的欢迎,但是大多数专业的Mac开发者已经支付了ADC会员资格,而且,让我们面对现实,我们都知道大多数iPhone应用程序将由Mac开发者编写。

通过电子邮件采访,Craig Hockenberry告诉我,“如果有一个简单的方法在iPhone上获得第三方应用程序,你让90%的开发人员高兴,越狱/解锁的势头要小得多。当然,仍然会有人想“与体制抗衡”,但他们属于少数群体,而不是多数群体。”

乔布斯声明中最有趣的部分就是这一部分,关于安全:

一些公司已经开始采取行动。诺基亚例如,不允许将任何应用程序加载到他们的一些新手机上,除非它们具有可以追溯到已知开发人员的数字签名。虽然这使得这样一部手机不能完全打开,但我们相信这是朝着正确方向迈出的一步。我们正在开发一个高级系统,它将为开发者提供对iPhone神奇软件平台进行本地编程的广泛访问,同时保护用户免受恶意程序的攻击。

很难不把“完全公开”这句吓人的话解释为诺基亚最近的“开放”广告活动- A类你们也不是完全公开的叫出来。这似乎是一个相当明确的迹象,表明苹果正在为iPhone应用程序开发类似的签名系统。将开发限制在付费的ADC成员身上,将立即允许苹果将应用程序签名与“已知开发者”联系起来。

这里是来自诺基亚的更多信息对所提到的签约项目工作;这是关于Symbian站点的类似信息.

哪些应用程序?

另一个问题是,苹果是否会允许参与(受苹果信任)的开发者编写他们想要的应用程序,自己签署应用程序,或者,在签署应用程序之前,是否需要苹果逐案批准。

Mac OS X Leopard包括一个新的“应用程序签名”功能,由苹果公司描述瑟斯利

应用程序上的数字签名验证其身份并确保其完整性。Leopard附带的所有应用程序均由苹果公司签署。第三方软件开发人员也可以签署他们的应用程序。

同一页描述了一个似乎适用于iPhone的“沙盒”功能,也是:

沙盒防止黑客劫持应用程序运行他们自己的代码,确保应用程序只做他们想要做的。它限制应用程序的文件访问,网络访问,以及启动其他应用程序的能力。”

苹果可能拒绝批准的一个潜在流行应用程序的典型例子是类似VoIP的应用程序,说,Skype,因为这会破坏对电话网络的需求,这反过来又损害了苹果与iPhone独家网络合作伙伴的收入共享。或者,说,即时消息,许多人认为,从目前的iphone手机上忽略了这一点,是对大量短信用户每月额外支付丰厚短信费用这一事实的让步。(个人而言,我怀疑iphone的ichat并没有削减到1.0,而是计划在未来更新。)

“诺基亚的模式是以可信/不可信的方式运行,”霍肯伯里说。“受信任的应用程序比不受信任的应用程序访问更多。这个模型可以扩展到允许不同级别的访问,这是基于苹果想要的(作为根证书的所有者)Wi-Fi的基本访问,边缘扩展访问,深口袋硬件接入,等等。

这是有道理的,我觉得这很可能是苹果的一道菜。

发展

有个问题,然后,开发人员将如何首先编写应用程序。如果iPhone只运行苹果批准的第三方应用程序,在申请被批准之前,你是如何开发的?

史蒂文·弗兰克-谁,作为联合创始人恐慌和一个顽固不化的小玩意猎犬,很可能是世界上最感兴趣的人在一个支持的iPhone SDK -通过电子邮件向我描述了危险的HIPTop/SIDKED的开发过程:“HIPTop/StruDand平台有一个Java SDK,它抽象掉所有低级别硬件的东西,使你无法触摸它,同时提供编写应用程序所需的一切。您可以在模拟器/虚拟机中进行测试和调试,该虚拟机可以模拟边缘条件,如蜂窝网络可用性丢失等。当你快做完的时候,准备尝试真正的硬件,您申请“开发者密钥”,这是一个小证书,您安装在手机上,使您能够运行第三方应用程序,而不是从设备上购买目录。要获取开发者密钥,你必须向他们证明你有一个几乎完整的应用程序,不仅仅是一些孩子想要通过提交一个版本的应用程序来获得热容骑师的铃声。您还必须签署一份弃权声明,声明您不再有资格获得手机运营商的支持。”

iTunes应用商店?

这给我们留下了分配和安装的问题。显而易见的是,苹果在iPod游戏中采取了同样的策略:iTunes商店。苹果,在这种情况下,可能会从每笔交易中得到一部分。从用户的角度来看,这很容易也很明显:在iTunes上购买和支付应用程序,iTunes负责安装软件,而且,也许,同步数据。

这类似于危险模型——应用程序必须经过批准,只能通过官方渠道销售。极限,当然,但正如弗兰克所说,“发展为危险的过程有些乏味,但仍比不允许第三方应用要好一个数量级,时期。”

Frank还指出了Danger的按需付费开发模式最明显的缺点:“从用户的角度来看,这种方法的一个缺点是基本上没有免费的第三方软件。每件东西至少要花费几美元。”


  1. 这则消息出现在苹果的热门新闻网页上,但是如果没有永久性药物,因此,随着新产品的出现,它很可能在一两周内从苹果的网站上消失。我保存了一份纯文本副本在这里后人。γ

  2. 我想知道计算器应用程序最初是否是一个小部件,也一样。用户界面,这肯定是小菜一碟,因为就像iPhone的天气和股票应用程序一样,它的外观和行为或多或少与Mac OS X中的相应小部件完全相同。所以我的理论是,当苹果决定将iPhone小部件重写为本地iPhone Cocoa应用程序时,他们使用小部件作为应用程序的规范。“制作一个看起来和行为完全像这个小部件的本地应用程序,”或多或少。有一件事让我觉得这是iPhone计算器应用程序不会发出任何声音,当你按下按钮。纯javascript/html小部件在单击或点击按钮时无法发出声音。我发现在iphone键盘上打字对打开的声音更满意;关掉声音,因为密钥是虚拟的,根本没有感觉反馈。计算器应用程序会感觉更好真实的如果它只是发出和iPhone键盘一样的按键咔嗒声。γ

  3. 我相信,这一变化在比赛中来得太晚或许可以解释为什么对“小部件”的残留引用仍在销售iPhone 1.0软件。(也可能意味着,当然,苹果计划在未来某个时候重新公开这一功能。)γ

  4. 这当然是个奇怪的问题为什么?所有iPhone应用程序都以根用户身份运行。我不知道答案。但我敢打赌在某个地方有一个有趣的工程权衡。如果你认为原因是iPhone OS X工程师的懒惰或无知,你是个白痴。γ