SRT

学期初,报名参加了一个SRT(学生研究训练),关于智能手机平台上的程序开发。由WuXiaojun和XuMingxing两位老师指导……
SRT项目第一次讨论会上,进行了分组。有Nokia手机的一伙人加入了Symbian组,有Windows CE手机的一群人加入了Windows CE组。我和另一个学长,以及某没到场的同学,分到了iPhone/Android组。
从这个分组来说,我们基本上是分到了一个没人要的组。毕竟Symbian和Windows CE发布已经很久了,这两个平台上有众多的开发人员,也有许多相关的参考书籍和文献,设计起来比较容易,而iPhone和Android毕竟是新生事物,相关资料还很少。

Android情况还算比较好,毕竟Google当初宣传Android的一大优势就是开放,因此用Android写程序自然会比较容易,也有Google的支持。
经过研究,Android的开发,其实主要就是下载安装SDK,然后装个eclipse插件,就可以开发,调试了。SDK里面带有模拟器,用起来挺方便的(虽然启动很慢……)。
我下了Linux版SDK,发现模拟器没法用。后来找到了Google公布的源代码,原来是用qemu模拟的,SDL负责显示,不过都是Google修改过的版本……
编译出来一个静态的emulator,替换掉SDK里面的,就可以正常工作了。我写了个hello world之后,就去搞iPhone去了。现在,组里那位学长已经成功写出井字棋了。

iPhone就麻烦多了。虽然Apple出了SDK,但是只能在MacOSX上跑,并且要编译出能够在iPhone上跑的程序要99美元……
幸好hacker们搞了Jailbreak,破解了iPhone的限制,是个程序经过随便什么代码签名就能跑,但是我没有Mac阿……
Hacker们也搞出了第三方的SDK,基于 llvm-gcc 和 Open Darwin CC Tools。Google Code上有个iphone-dev,就是这个东西。
照着网上的说明,我先编译出了 iphone-dev 项目的结果。但是,拿这个编译个命令行Hello World还行,编译图形界面程序,就说有东西没定义。折腾了半天,知道这个只能用于1.x版本的iPhone,2.x版本需要新的第三方SDK…… iPhone在1.x到2.x的过程中,改变了Objective C的ABI…… 编译target也从arm-apple-darwin(其实是8)变成了arm-apple-darwin9
又折腾了至少十几个小时,终于搞出了新版SDK,编译出了图形化的程序…… Apple在新系统还引入了其他限制,图形界面的程序从命令行启动会被Kill,只有从SpringBoard(iPhone的类似于桌面的系统程序)才能启动…… 仿造了一个应用程序条目之后,终于从SpringBoard启动成功,图形化的Hello World阿~
话说Apple公布的SDK还是很有帮助的,让第三方SDK编译过程简化了不少…… 但是感觉第三方程序严重受制于Apple,Apple改变一点东西,第三方程序编写者就有很多东西要改,除非加入Apple的某计划……

总之,现在在iPhone和Android上面都能写带GUI的程序了~ hacker威武~

2 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.