免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2267 | 回复: 0
打印 上一主题 下一主题

Android之旅-Emulator WinXP下的编译 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-03 13:17 |只看该作者 |倒序浏览

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的世界。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93793/showart_1953275.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP