直接进入正题 ,具体细节参见
我只是做一些补充说明:
1)下载android代码
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1.2
2)下载kernel代码
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git checkout remotes/origin/android-goldfish-3.4 -b $LOCAL_KERNEL
3) 搭建编译环境
64-bit:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
32-bit:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
libxml2-utils xsltproc
4)编译android源码
a) Java SDK版本不符合,修改 build/core/main.mk
找到相应的 $(error stop) ,注释起来 #$(error stop) ,这样的地方有两个
b)$ source build/envsetup.sh
$ make -j4
如果一切正常,将会生成android需要的几个img文件
5)编译kernel
a) 使用android-4.2.2的工具链
$ export PATH=XXX/android-4.2.2_r1.2/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH
同时修改Makefile
ARCH ?= arm
CROSS_COMPILE ?= arm-eabi-
b) 配置内核,注意,这个地方有几个配置文件可以选择,我第一次用
arch/arm/configs/goldfish_defconfig 系统不能起来,后来选用了
arch/arm/configs/goldfish_armv7_defconfig 系统成功启动,android的SDK中似乎也是用的这个配置文件
$ cp arch/arm/configs/goldfish_armv7_defconfig $KERNEL_ROOT
make goldfish_armv7_defconfig 会提示‘‘goldfish_armv7_defconfig’ is up to date,不予理会,采取下面的方式得到 .config的配置文件
$ cp goldfish_armv7_defconfig .config
c) make -j4
生成img文件在arch/arm/boot/zImage
6) 配置皮肤
系统默认的皮肤没有按键,不好调试,我没有发现系统中皮肤的目录,所以下载android-4.2 SDK ,
利用里面的皮肤来替换
7)运行模拟器,我写了一个脚本,这样比较方便
$ ./run_emulator.sh
内容如下:
#!/bin/sh
out/host/linux-x86/bin/emulator -sysdir out/target/product/generic/ -system out/target/product/generic/system.img -ramdisk out/target/product/generic/ramdisk.img -data out/target/product/generic/userdata.img \
-skindir /home/ubuntu/tools/bundle/sdk/platforms/android-17/skins -skin WVGA800 \
-kernel /home/ubuntu/android/emulator-4.2/goldfish-3.4/arch/arm/boot/zImage
如果一切正常,你将可以看到自己定制的android系统启动了,兴奋吧!