Android之旅-Emulator WinXP下的编译

Google的开发手机平台Android的发布,可能将改变目前手机开发的模式,提供更多机会给个人,在朋友的鼓动下,决定学习之.
这里要简单描述下Android SDK的基本结构,如图

提供给用户的编程语言是Java,是朋友的强项(这个留给他吧),我只对lib和linux有点兴趣(呵呵,开源的东西学起来才有劲)
从google的android网站dowload最新的sdk(提供给java开发使用的),看了一下,基本是传统的模拟器开发模式(传统是传统,提供这个
还是很方便的),那么我们首先从模拟器emulator开始吧。
1、下载模拟器的源代码:
http://code.google.com/p/android/downloads/list
目前最新的版本是:android-emulator-m3-rc37.tar.bz2
在linux平台下解压,目录结构很简单,一个sdl(知道是什么不?)目录,一个qemu(居然是它!)目录,编译脚本build-emulator.sh,README文件。
在linux下编译很容易,就不说了,只是目前我使用的是windowsxp(想不用都不行,ubuntu还不支持我的声卡。。。),但是找遍了所有的网站,都没有介绍怎么在windows下编译模拟器的文章(汗。。。)
没办法,从头开始,先搞清楚里面是什么东西,step by step
SDL--在baidu上搜索了下,文章挺多的,不多说了,是一个跨平台的库,主要提供做linux上的game开发的,叫Simple DirectMedia Layer,想来估计是DirectX之类的,关键是能跨平台(也是为啥qemu要用它的原因了吧)。
QEMU--不多说了,上网搜索吧,一个超强的模拟器(同样跨平台)。说来google真是爽,那么多开源的东西给它用,它自己居然不开发更多的源文件,批评一下。
在Win32上编译SDL和QEMU的文章倒是一堆一堆的,基本上都不用Cygwin,而是使用MinGW,我看了下sdk下的dll文件,有一个mgwz.dll,很眼熟啊,事实也证明偶是对的,google提供的sdk中的emulator也是在mingw上编译的(真迟钝。。。)
开始吧,先把MinGW安装好
1、到http://www.mingw.org下载MinGW-5.1.3.exe以及MSYS-1.0.11.exe,安装好MinGW的环境,强烈建议不要网络安装,那叫一个慢,直接从mingw的网站上下载需要的文件,至于要安装哪些,看看MinGW-5.1.3.exe执行中解开的那个.ini就可以了。
重点说明:必须安装gcc 3.4.5以上的,我最早安装的是3.4.2,编译怎么也过不了,两个夜晚浪费在这个地方了(哭。。。。。)
MSYS是在Win32上的一个unix shell环境,好象执行速度比cygwin要慢。
安装过程不赘述,网上太多介绍了。
最后是要下载两个msys的工具下来,一个bash的最新版,一个是make的最新版,我下的是
make-3.81-MSYS-1.0.11-1.tar.bz2
bash-3.1-MSYS-1.0.11-1.tar.bz2
如果编译出现问题,最好连一个zlib的最新版也下一个吧。又是两个夜晚的血的教训,在win32上用linux的东西就是自己找罪受。。。

2、将emulator的源代码解压到/home/Administrator下,执行./build-emulator.sh,成功。(失败20次后。。。)

编译过程顺利的话,会生成一个local文件夹,这里是放SDL生成库的地方,编译qemu的时候需要使用它,主要是bin/sdl-config文件,提供libs和include文件的路径和版本信息。
sdl的版本是1.2.12,qemu的版本是0.8.2

3、因为我试过直接编译qemu的最新版,发现google改过了qemu的东西,核心没变,新增了一些硬件支持和增加了一些调试用的参数,具体的东西可以去读代码
android_sdl.c,这个是emulator的主函数文件。

4、模拟器编译成功后,直接运行提示没有system.img,这个到sdk的tools/lib/images下面拷贝kernel-qemu,system.img,ramdisk.img,userdata.img到emulator.exe的当前目录就可以了,把console和verbose都开起来,打印了很多启动信息,可以了解一下模拟的硬件配置,居然是ARM9的u,难怪qemu的target是arm-softmmu呢。

到这里,emulator的概貌搞清楚了,x86 code的emu,arm code的kernel和vm,java code的api接口,真够杂的。Bill最近说,不能惧怕复杂。恩,下一步继续探索kernel的世界。

posted on 2008-01-20 20:30  海沙  阅读(3320)  评论(2编辑  收藏  举报

导航