android4.4.2源码和内核编译——图文详细记录

简介:

Android 4.4针对 RAM 占用进行了优化,甚至可以在一些仅有512MB RAM的老款手机上流畅运行。支持内核同页合并KSM,zRAM 交换,似乎是为了更好地在众多智能穿戴设备上运行。统一整合红外、NFC、蓝牙等通讯协议标准,以便手机厂商做出相同选择。

1.开发主机

开发主机使用的系统是 Ubuntu Kylin 14.04 如下所示:

android4.4.2源码和内核编译——图文详细记录_第1张图片


2.一点八卦

以下内容属于八卦,可以跳过,上面的硬盘容量明显是不能满足android的开发的,这里先八卦下,自己的电脑已经两年没有进行清灰维修了,之前几个月就已经明显感觉机子运行速度慢了很多,和公司的那个破机子“不分高下”,(老板太抠门,只能用这样的破机子),之后用周天的时间,对自己的电脑进行了升级,载原来机械硬盘的基础上增加了128GB 固态硬盘,对电脑尽心清灰更换散热硅胶之后,速度明显快了许多,之后在固态硬盘上分出三个区 40G作为win7系统使用,40G作为ubuntu系统的 / 根文件目录使用,剩余的30多G供 /home 家目录使用,系统安装好后,再将原来的机械硬盘分出一个区给ubuntu使用,我这里分了200G左右的分区挂在在 /home价目录下,供日后android开发使用,所以现在供android开发使用的空间已经用270多G,这么多的容量,想怎么使用就怎么使用吧!

之后要讲述的android源码,内核源码,android所用的开发工具都是放在被挂在的那个分区上,好了……八卦结束,继续往下


3.资源下载

用到的资源无论是android源码还是内核源码,向通过google下载,目前已经是不可能了,《圣经》说:“当上帝关了这扇门,一定会为你打开另一扇窗。”,没错网络上总是由很多热心人的,找了很久找到的下载地址,谢谢那些资源共享的人……

内核源码的下载地址如下:

115网盘礼包码:5lbd76rru5or

http://115.com/lb/5lbd76rru5or

android源码下载地址如下:

http://pan.baidu.com/s/1gdrJzYr

android开发工具 NDK 下载地址:

Linux 64位 : http://pan.baidu.com/s/1bnvRRJL

android开发工具 ADT下载地址:

Adt Bundle Linux 64位版  : http://pan.baidu.com/s/1dDxjHXv

android开发工具 JDK下载地址:

这个网上比较多,这里选择的版本是 jdk1.6.0_45,之前使用了个过高的版本,悲剧就那样发生了……


4.开发环境设置

用到的资源都下载好之后,就可以进入主题了,在接下来的内容之前,还要做的一件事情就是下载安装相应的android源码编译的依赖包和依赖工具(android源码编译这个是必须得有),网上这方面的东西也比较多,这里就不说了,按照网上安装好了必须的依赖工具之后,可以继续往下

解压下载好的android开发工具,结果如下:


接着设置环境变量,在 /etc/profile 文件中设置环境变量,在该文件的末尾加上
android4.4.2源码和内核编译——图文详细记录_第2张图片


5.android内核的编译

解压下载好的android内核源码,进入解压生成的目录执行如下的命令

git branch -a

android4.4.2源码和内核编译——图文详细记录_第3张图片

可以看到由好多内核版本,这里我们选在 3.10,接下了提取内核,使用如下的命令

 git checkout remotes/origin/android-goldfish-3.10
完成之后可以观察到当前目录下多了好多文件,这就是我们需要的 android-goldfish-3.10 的内核源码

android4.4.2源码和内核编译——图文详细记录_第4张图片


之后对 Makefile 文件进行配置,配置如下:


保存退出之后执行如下命令,对板子选择:

make goldfish_armv7_defconfig

接着使用如下命令对内核进行编译:

make -j4

make 后面的 -j4 选项是4线程编译,如果自己的机子配置更高,可以使用更多线程编译,编译的速度会快很多。

编译完成之后在 boot目录产生如下文件,如下:



对内核进行配置,打开 printk 和 KGDB调试功能,使用下面命令对内核进行配置:

 make menuconfig
做如下选择:

之后对内核进行配置,打开 printk 和 KGDB 调试功能,这样以后才能看到内核答应出来的信息,具体的配置如下:

android4.4.2源码和内核编译——图文详细记录_第5张图片

进入Kernel hacking,做如下的选择

android4.4.2源码和内核编译——图文详细记录_第6张图片

保存退出,OK 重新编译内核……

 make -j4

内核编译结束……呵呵下面进行android源码的编译!


6.android源码的编译

android源码编译是个漫长的过程,以我机子的配置,编译花费时间 more than seven hours。

所以 就等它慢慢的编译吧,自己可以去打几场篮球外加鱼塘边几个小时的垂钓,回来之后,将鱼塘里调到的鱼洗干净,然后再去超市买包上等的火锅底料(如果没有在鱼塘里调到鱼,可以顺便在超市买上几条……呵呵),然后开始火锅,这时就等火锅煮着吧,去看看有没有编译好,看来高估自己的机子了,居然还在编译……那就专心的去吃火锅吧,打球钓鱼也累了一天了,品尝着美味的火锅喝着清爽的啤酒……一小时之后,火锅吃完,再去看看,谢天谢地终于编译好了,真是个漫长的过程……结果如下:

解压下载的 android源码 ,进入得到的 android源码目录,查看内容如下:

执行如下命令配置 android编译之前的最后变量


接着使用如下命令进行编译:

make -j4
慢慢的等待 more than seven hours later……

好了,编译好的文件位于



android源码编译结束……下面进行模拟器上验证!


7.在模拟器上验证 system 和 zImage内核

进入android开发工具中的 ADT 目录,运行eclipse



建立一个模拟器,详细步骤如下图所示:

android4.4.2源码和内核编译——图文详细记录_第7张图片


模拟器建好之后,就可以用上面编译好的 system文件系统 和 zImage 内核启动模拟器,在模拟上进行验证,使用如下命令启动模拟器,可以指定所使用的内核,命令如下:

emulator -verbose -show-kernel -kernel /media/tsy/data/android_src/goldfish/arch/arm/boot/zImage -avd Device_Test

在启动内核之前我们可以在内核中添加 printk 内核打印语句,提供验证使用

在platform.c文件中增加几天内核打印信息,具体如下图所示:

android4.4.2源码和内核编译——图文详细记录_第8张图片


重新编译内核,结束之后启动模拟器,效果如下图所示:

android4.4.2源码和内核编译——图文详细记录_第9张图片

由上图可以看到,我们增加的内核打印信息也在模拟器启动时,被打印出来,证明调用的是我们自己编译的内核

正常启动成功,效果图如下图所示:

android4.4.2源码和内核编译——图文详细记录_第10张图片


OK !接下来查看内核信息

android4.4.2源码和内核编译——图文详细记录_第11张图片

这里有个问题,两者的时间对不上,不知道为什么,还在寻找答案……


OK!android4.4.2源码和内核的编译到此结束……



你可能感兴趣的:(Android开发,golefish内核编译)