如何构建Android 1.5系统映像
2009-08-24 16:36
537 查看
请先参考如何取得Android源代码
一文,通过repo来取得当前最新的android主线代码(或者拿名为android-SDK-1.5_r1的tag也无妨)。
1、Host OS编译环境准备
在取得android源代码和编译内核的过程中,我们已经至少安装了
cURL、 git-core、ncurses-dev、
build-essential等软件包(Python2.5已经捆绑在Ubuntu8.04中),不过这还不够,要完成Android代码树的编译,我
们还需要flex、bison、gperf、valgrind(可选)、libsdl-dev、libesd0-dev、libwxgtk2.6-
dev、zlib1g-dev等软件包,好在apt-get可以帮我们一次搞定。
sudo apt-get install flex bison gperf valgrind libsdl-dev libesd0-dev libwxgtk2.6-dev zlib1g-dev
另外,编译过程中还需要用到JDK 5.0(注意JDK6.0不被支持),请到Sun的官方网站
下载后安装。
2、工具链和环境变量
把JDK5.0加进$PATH,如:
$export PATH=$PATH:/home/william/jdk5.0/bin
然后可以用java -version来确认java的版本
除此之外,编译内核所作的环境变量和工具链的设置在编译系统映像时并不需要,这都由android的编译脚本搞定了。
3、关于编译选项
在build/core目录下的envsetup.mk定义了target的体系结构和OS,默认为arm和linux,我们暂时不涉及移植,所以不需要修改。
4、开始编译
做完上面的准备,在代码树的根目录下敲make就可以了,编译的过程大约需要持续1~2个小时,总计需要大约3.5G的可用空间。
5、测试生成的image
编译完成以后如果想在模拟器中运行,除了kernel的映像文件以外,所需的其他3个映像文件分别是:(位于out/target/product/generic/目录)
ramdisk.img
: 包含了在模拟器中启动Android所需的文件系统
system.img
: 初始的Android系统映像,包含了程序和库文件
userdata.img
: 初始的用户数据映像文件
模
拟器会首先到指定的***D所在的目录查找是否有userdata映像存在,如果没有的话就会基于初始的userdata.img来创建一个,加载这3个映
像文件后,它会把system.img和userdata.img分别挂载载到ramdisk文件系统中的system和userdata目录下。所有的
用户数据都会被保存在***D目录下的userdata-qemu.img中,初始的用户数据映像文件并不会被修改。
通过命令行参数启动模拟器,加载我们编译的系统映像的方法:
首先设定ANDROID_PRODUCT_OUT环境变量,指向out/target/product/generic/目录
(Update:实验证明这一步是没有必要的),然后运行
emulator @1.5_L2 -system system.img -ramdisk ramdisk.img
或者我们加上-kernel参数,用自己编出来的kernel来启动
系统成功启动的截图:
编译Android系统映像虽然花费了不少的时间,不过总体来说还是比较简单的,Android的build system帮助我们搞定了大部分的设置。
一文,通过repo来取得当前最新的android主线代码(或者拿名为android-SDK-1.5_r1的tag也无妨)。
1、Host OS编译环境准备
在取得android源代码和编译内核的过程中,我们已经至少安装了
cURL、 git-core、ncurses-dev、
build-essential等软件包(Python2.5已经捆绑在Ubuntu8.04中),不过这还不够,要完成Android代码树的编译,我
们还需要flex、bison、gperf、valgrind(可选)、libsdl-dev、libesd0-dev、libwxgtk2.6-
dev、zlib1g-dev等软件包,好在apt-get可以帮我们一次搞定。
sudo apt-get install flex bison gperf valgrind libsdl-dev libesd0-dev libwxgtk2.6-dev zlib1g-dev
另外,编译过程中还需要用到JDK 5.0(注意JDK6.0不被支持),请到Sun的官方网站
下载后安装。
2、工具链和环境变量
把JDK5.0加进$PATH,如:
$export PATH=$PATH:/home/william/jdk5.0/bin
然后可以用java -version来确认java的版本
除此之外,编译内核所作的环境变量和工具链的设置在编译系统映像时并不需要,这都由android的编译脚本搞定了。
3、关于编译选项
在build/core目录下的envsetup.mk定义了target的体系结构和OS,默认为arm和linux,我们暂时不涉及移植,所以不需要修改。
4、开始编译
做完上面的准备,在代码树的根目录下敲make就可以了,编译的过程大约需要持续1~2个小时,总计需要大约3.5G的可用空间。
5、测试生成的image
编译完成以后如果想在模拟器中运行,除了kernel的映像文件以外,所需的其他3个映像文件分别是:(位于out/target/product/generic/目录)
ramdisk.img
: 包含了在模拟器中启动Android所需的文件系统
system.img
: 初始的Android系统映像,包含了程序和库文件
userdata.img
: 初始的用户数据映像文件
模
拟器会首先到指定的***D所在的目录查找是否有userdata映像存在,如果没有的话就会基于初始的userdata.img来创建一个,加载这3个映
像文件后,它会把system.img和userdata.img分别挂载载到ramdisk文件系统中的system和userdata目录下。所有的
用户数据都会被保存在***D目录下的userdata-qemu.img中,初始的用户数据映像文件并不会被修改。
通过命令行参数启动模拟器,加载我们编译的系统映像的方法:
首先设定ANDROID_PRODUCT_OUT环境变量,指向out/target/product/generic/目录
(Update:实验证明这一步是没有必要的),然后运行
emulator @1.5_L2 -system system.img -ramdisk ramdisk.img
或者我们加上-kernel参数,用自己编出来的kernel来启动
系统成功启动的截图:
编译Android系统映像虽然花费了不少的时间,不过总体来说还是比较简单的,Android的build system帮助我们搞定了大部分的设置。
相关文章推荐
- 如何构建Android 1.5系统映像
- 如何构建Android 1.5 Linux内核映像
- Android中应用程序如何获得系统签名权限
- 如何构建自己的交易系统
- Android中如何获取系统中所有的应用程序
- 如何使Android应用程序获取系统权限
- TQ210搭载Android4.0.3系统构建之LED从驱动到HAL到JNI到应用程序(JNI篇)
- TQ210搭载Android4.0.3系统构建之LED从驱动到HAL到JNI到应用程序(应用程序篇)
- Android如何监听系统输入法弹出显示事件
- Android之 看“马达”如何贯通Android系统 (从硬件设计 --> 驱动 --> HAL --> JNI --> Framework --> Application)
- Android系统如何移植wpa_supplicant及wifi驱动
- 如何设置Android系统中的BT2.1 device到SSP的DEBUG模式
- 如何构建自己的笔记系统?
- Android应用中如何调用系统闹钟及日历
- Android如何在App中启动系统闹钟
- 打造一个全命令行的Android构建系统
- Android:如何统计系统的启动时间
- LGame(Android及J2SE游戏引擎)入门示例——如何构建一个游戏
- Android系统移植与调试之------->如何修改Android的默认语言、默认时区
- 可望不可及的开源:Google是如何逐步牢牢控制开源系统Android的?(下)