全部博文(685)
分类: 嵌入式
2015-03-14 12:25:54
前一段时间一直在弄毕业论文和答辩的事情,还要急着赶回来上班,已经有一段时间没有弄Android了,话不多说,在老罗前一篇文章提到,从源树下载下来的最新Android源,是不包括代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先好的,也就是prebuilt/-arm/kernel/kernel-qemu文件。众所周知,一个新的Android系统必须使用自己的Android内核,才可以添加一些特有的功能,进行一些定制化的,那么怎样运行自己的Android内核呢?因为谷歌官网上已经有可以下载到的Android内核,还有就是三星和HTC也公布了自己的Android内核,让开发者可以有更大权限开发一些特定的应用,本人愚见,这种策略对于三星和HTC也有很大的利益!
因为谷歌上有可以在模拟器中运行的goldfish Android内核源码,用这个来学习DIY Android内核是非常好的选择,我在学习过程中主要参考了老罗的Android之旅,具体参考如下:
参考文档:http://blog.csdn.net/luoshengyang/article/details/6564592
另外我想说的是,任何知识都需要亲自去尝试,才能学得更牢!
一 ==下载Linux Kernel Android源代码。
1. 使用GIT工具下载,执行以下命令:
USER-NAME@MACHINE-NAME:~/Android$ mkdir kernel
USER-NAME@MACHINE-NAME:~/Android$cd kernel USER-NAME@MACHINE-NAME:~/Android/kernel$git clone 然后转到刚才同步的文件中,我同步之后只有一个goldfish目录 接着就是检出能够在Android模拟器中运行的Android内核源码,cd goldfish ;接着git checkout remotes/origin/archive/android-gldfish-2.6.29 二 ==编译下载下来的Android内核源码goldfish1. 导出交叉编译工具目录到$PATH环境变量中去: USER-NAME@MACHINE-NAME:~/Android/kernel/common$export PATH=$PATH:~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/ 2. 修改common目录下的Makefile文件的以下两行为: # ARCH ?= (SUBARCH) # CROSS_COMPILE?= ARCH ?= arm #体系结构为arm CROSS_COMPILE ?= arm-eabi- #交叉编译工具链前缀,参考~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin目录 3. 开始编译: USER-NAME@MACHINE-NAME:~/Android/kernel/common$make goldfish_defconfig 出现莫名错误,make: ***//build_kernel/linux-2.6.14.1/arch/arm Is a directory .Stop网上查询得知,原来是原来是因为 ARCH ?= arm后面多了一个空格的缘故,我以为是错误了!!!囧!!!修改Makefile,把空格去掉,接着编译 USER-NAME@MACHINE-NAME:~/Android/kernel/common$make成功编译了!三==运行编译成功的Android内核emulator -kernel /home/hu/android-2.3/kernel/goldfish/arch/arm/boot/zImage用adb 查看运行的内核信息 显示运行正是刚才编译成功的Android内核接下来做的应该是在网上下载一个对应于自己的手机Android内核,然后编译一下,下载到手机中用用,这才能正真感受到DIY Android内核的魅力!附上小米论坛上一位机友编译htc Android内核的图文教程,有htc手机的猿可以试试!!!