上一篇文章讲到如何构建Android的kernel映像,我们都知道,系统要运行起来光有kernel映像是不够的,今天我就来说一说如何构建Android的系统映像。

请先参考如何取得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: 初始的用户数据映像文件
模拟器会首先到指定的AVD所在的目录查找是否有userdata映像存在,如果没有的话就会基于初始的userdata.img来创建一个,加载这3个映像文件后,它会把system.img和userdata.img分别挂载载到ramdisk文件系统中的system和userdata目录下。所有的用户数据都会被保存在AVD目录下的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帮助我们搞定了大部分的设置。

转自William Hua的Blog

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. 想抢先体验Android操作系统的魅力吗?那就使用Android(安卓)LiveCD
  4. Android中采用Pull解析器对XML文件进行解析
  5. 【iOS-cocos2d-X 游戏开发之三】Mac下配置Android(安卓)NDK环境
  6. Android的源代码结构 && 一些常用术语 && Android的支持库 && ap
  7. Android配置蓝牙键值
  8. Android(安卓)NDK编程入门笔记
  9. 如何在Android工程中导入其它工程作为引用,解决NoClassDefFound

随机推荐

  1. Android TTS 支持中文
  2. 2020最新版Android一步一步教轻松通过Arc
  3. android使用滚动视图
  4. android UI跨线程操作
  5. GridView
  6. 设置透明,模糊,黑暗度
  7. android aosp 下载源代码
  8. android中关于margin的一些注意点
  9. (20120722)(笔记002)android开发环境搭建
  10. Android资料备注