[AllenKids 专稿] iPhone SDK 观察(之一)

本文作者为西西河AllenKids 先生,经其授权,我们会将他一些见解极为独特的文章引介给 Apple4us 的读者。

iPhone SDK 观察 - 舞姿飘忽,苹果的探戈

3 月 6 日的 SDK Event 可能比我想象的重要许多,Apple 官站大张旗鼓的推广宣传,QuickTime 直播,iTunes Podcast 下载,昨天还意犹未尽的放出了 HD 版的流媒体链接。开发者档案库的迅速上线,HIG(用户介面规约),Reference 也更新得相当及时,更别提 ADC 动用多位传教士(Evangelist)录制的 10 段总时长达 3 个小时的详解视频了(均可供 ADC 会员免费下载,制作精良,信息量也不错)。

业界各大厂商也纷纷示好,甚至不惜以热脸贴冷屁股(如升阳),PC 游戏天神 John Carmark 也对其开发环境赞许不已。

而各路亲水果族的评论员们更是迫不及待地开始山呼万岁,认为 iPhone 平台即将一桶浆糊了。

这个搅得大家精神莫名亢奋的 SDK Roadmap 到底是虾米碗糕?我们先来简单看看吧:

1、开发环境为 Leopard 上的 Xcode 套件(其中包含定制的 Instruments 实时性能监测和 Debug 工具,以及接近全功能的 iPhone 模拟器),语言为 Objective-C,但提供 C,C++ 的原生嵌套支持。

2、iPhone OS 的系统架构和多数 Framework 与 OS X 大同小异,从 Unix 内核,到 Core Foundation Framework 系统级服务,再到更高层的Quartz2D、 Core Animation、Core Audio、OpenGL ES/AL都完全相同或者是功能相似的简版,一直到最顶层的 API 才有些真正重大的区别,桌面版 OS X 使用 Cocoa, 而 iPhone 版则是变体 Cocoa Touch。所以一个有经验的Mac程序员几乎可以毫不费力的适应 iPhone 的编程。

3、SDK 免费下载,但是想要真正在 iPhone 上运行需要花费 99 美元加入 iPhone Developer Program, 由此不仅能得到官方的技术支持,也允许其将软件挂上唯一的 iPhone 软件商店 App Store 出售,开发者自由定价,销售收入与苹果七三分成,除此之外没有任何的管理、帐目、挂载费用——如果你宣布免费,那么苹果也就不向你收钱。

4、苹果将会对上线软件进行审核,诸如色情、恶意、违反开发者协定等等的软件将不能获准出售。

5、苹果联合著名风投 KPCB 设立总额高达 1 亿美金的 iFund,用来鼎力支持在 iPhone 平台的创业的开发商。

根据在各个苹果开发者论坛看到的情况,似乎大家都对此框架表示意料之外的惊喜,虽然 30% 的提成看上去很高,但是 1、开发者无需购买昂贵的开发用机,任何一台 Intel Mac 都可以胜任,外加一台测试用的普通 iPhone,99 美元的会员资格,就是一个完整的开发环境。这个比很多移动/主机平台的开发成本都要低得多。2、开发者将完全不用操心营销问题,iPhone 的 2.0 版固件将包含一个 App Store 按钮将软件直推到每一台终端,并且没有主机费用,没有库存/物流费用,只要你的软件不出大篓子,那 70% 就是净收入。就像某开发者说的那样:管它多少钱的 70% 也比零蛋的 100% 要好。Ars Technica 的 John Siracusa 更是掩饰不住的欢歌: 我们要发财啦!!!~~~~

但是在最终用户那里,我们看到的却更多的是担心,担心苹果的审核制度会扼杀很多对用户很有价值,却不符合 Apple Inc. 利益的软件,比如直接从 Amazon 购买无 DRM 音乐的软件,使用 EDGE 网络的 Skype 软件等等。

更进一步地探究 iPhone HIG 等相关文件,我们还发现了苹果对于开发者进一步的约束:

1、同一时间只能运行一个第三方软件,当切换程序时,之前的程序应顺利保存退出。因此开发者应该为此特性作好准备,保证用户再次打开本程序时回到退出时的状态。

2、程序退出后原则上也不允许在后台执行 Daemon 以获得必要的数据。(这个引发了大家对于即时通讯软件表现的担忧)

3、第三方程序不得引入自身的 Framework 和 API(因此升阳真的单方面开发 iPhone 版 Java 虚拟机的话,大概是要吃官司的。)

4、第三方软件不能对文件系统进行操作,不能利用扩展坞与外设进行通讯(这两条显得超级没天理,在这里 Apple 显得很 evil。)

从发布会和强大的 SDK 对于开发者完全开放底层 API 来看(可直接操作 BSD Socket 和网络端口),Apple 明显是想把 iPhone 打造为一个对开发者友好的强势平台。而 SDK 使用协议中的诸多限制,却让人心生疑窦——虽然 已经有开发者证实,所有这些限制在 SDK 中都没有硬性实施(你要想在自己的 iPhone 上搞多任务完全没问题),但毕竟 Apple 掌握着所有软件的生杀大权,它的这些条条框框将极大的束缚第三方软件的功能和实用性——这种进一步退两步的姿态,实在让人难以捉摸~~~

苹果的探戈,让人看不懂啊...