关于如何下载Android 源码请查看另一篇文章(同样是图文教程):
如何编译Android 源码请看:
下面进入正题:
第一步:下载goldfish源码
在Android源码根目录下新建kernel文件夹
$mkdir kernel
$cd kernel 下载源码:
$git clone ;
下载完毕如下图:
此时在kernel目录下会生成一个goldfish文件夹进入此目录:
$cd goldfish
此目录下有一个隐藏的目录git通过
$ls al
可看到此目录:
查看所有分支:
git branch a
如下图:
check out:
$git checkout remotes/origin/Androidgoldfish
此时你会看到goldfish目录下会出现很多文件:
$ls
这个时候goldfish源码就已经下下来了接下来的事情就是编译了
第二步:编译goldfish
导出交叉编译工具目录到$PATH环境变量中去
export PATH=$PATH:~/WORKING_DIRECTORY/prebuilt/linuxx/toolchain/armeabi/bin
我们将使用上述这个目录下的交叉编译器armeabigcc
然后在glodfish目录下用gedit打开Makefile文件找到这两行文字:
# ARCH?= (SUBARCH)
# CROSS_COMPILE?=
修改为:
ARCH ?= arm
CROSS_COMPILE ?= armeabi
$gedit Makefile
注意:ARTH ?=arm的arm后边不要有空格不然就会出现如下类似错误:
Make:/kernel/goldfish/arch/arm: Is a directoryStop
害我白白浪费了几个小时
关闭gedit接下来就开始make了执行如下指令:
$ make goldfish_armv_defconfig
$ make
注用$make goldfish_defconfig这样配置也可以编译通过模拟器也可以启动但是Android的开机画机就显示不了$adb shell也死活连不上原因就是这个goldfish_defconfig这个配置文件问题
提示:
$make goldfish_armv_defconfig指令的意思是将目录WORKING_DIRECTORY/kernel/goldfish/arch/arm/configs/下的goldfish_armv_defconfig文件内的Kconfig配置内容复制到WORKING_DIRECTORY/kernel/goldfish/目录下nfig文件中nfig文件是一个隐藏目录保存着各个目录下Kconfig文件的配置
最终结果如下图所示:
这样就表示编译成功了
$ ls arch/arm/boot/
可以看到zImage文件
第三步:在模拟器中启动编译好的内核
$ export PATH=$PATH:~/WORKING_DIRECTORY/out/host/linuxx/bin
$ export Android_PRODUCT_OUT=~/WORKING_DIRECTORY/out/target/product/generic
$ emulator kernel ~/WORKING_DIRECTORY/kernel/goldfish/arch/arm/boot/zImage &
模拟器启动界面:
进入模拟器从设置里看版本信息:
从上图可以看出当前Android版本是内核版本是说明成功了
同样也可以通过adb shell来查看内核版本信息如下图:
$adb shell
#cd proc
#cat version
完!