前提是java SDK已经装好,系统有可能自带。java -version命令检查
1. 下载交叉编译工具,地址http://www.codesourcery.com/gnu_toolchains/arm/download.html 选择Linux版本的,
我的是 arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
2. 下载Android内核源代码,地址http://code.google.com/p/android/downloads/list进去之后点击一下all download,
我下了个 linux-2.6.25-android-1.0_r1.tar.gz
3. 下载Android linux版本SDK,主要是用到里面的一个配置文件,地址http://developer.android.com/sdk/index.html。
我下载的是android-sdk_r12-linux_x86.tgz
4. 解压所下载的3个包
mkdir /opt/Android
tar xvf arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 -C /opt/Android/
tar xvf linux-2.6.25-android-1.0_r1.tar.gz -C /opt/Android/
tar xvf android-sdk_r12-linux_x86.tgz -C /opt/Android/
5. 设置环境变量
vim /etc/profile在该文件末尾加上
mypath_1=/opt/Android/android-sdk-linux_x86/tools
mypath_2=/opt/Android/arm-2011.03/bin
mypath_3=/opt/Android/android-sdk-linux_x86/platform-tools (这个文件刚开始是没有的,等第六步结束之后就有了)
export PATH=$mypath_1:$mypath_2:$mypath_3:$PATH
保存退出 执行source /etc/profile使当前环境变量在当前终端有效
6. 执行android命令,弹出一个窗口(Android SDK and AVD Manager),然后点击窗口中左边的Available packages,之后在
右边的窗口中点击Android Repository,下一步选择一个版本的SDK Platform Android ...(我选择2.2版本的),下一步点击
窗口右下角的Install Selected,之后是同意。此时需要等待下载完成。
7. 完成下载后,关闭窗口。然后重新执行android命令,选择Virtual devices,点击New创建AVD
在弹出的窗口中填写一些信息(我的是Name: Cyrnic Target: Android 2.2 - API Level 8 Skin: Resolution 600 * 800
Hardware:可以自己添加),完成点击Create AVD按钮
8. 执行模拟器
emulator -avd Cyrnic &
如果之前的一切正常,模拟器就可以开启,等待完全开启之后在终端执行
adb pull /proc/config.gz /opt/Android/ 将模拟器中的config.gz文件拷贝到主机的/opt/Android目录中
cd /opt/Android
gzip -d config.gz
cp config kernel.git/
9. 修改内核Makefile
cd /opt/Android/kernel.git
vim Makefile
将SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/s390x/s390/ -e s/parisc64/parisc/ \
-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
-e s/sh.*/sh/ ) 这些注释掉 然后改为 SUBARCH := arm
保存退出
执行make (make过程中可能会出现要重新配置内核的选项,此时一直回车就可以了)
编译成功后会在/opt/Android/kernel.git/arch/arm/boot中生成zImage文件
10. 关闭之前打开的模拟器,用新的内核执行模拟器
emulator -avd Cynric -kernel /opt/Android/kernel.git/arch/arm/boot/zImage &
不出问题会执行成功,已验证通过