简介:
Android 4.4针对 RAM 占用进行了优化,甚至可以在一些仅有512MB RAM的老款手机上流畅运行。支持内核同页合并KSM,zRAM 交换,似乎是为了更好地在众多智能穿戴设备上运行。统一整合红外、NFC、蓝牙等通讯协议标准,以便手机厂商做出相同选择。
1.开发主机
开发主机使用的系统是 Ubuntu Kylin 14.04 如下所示:
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 文件中设置环境变量,在该文件的末尾加上
5.android内核的编译
解压下载好的android内核源码,进入解压生成的目录执行如下的命令
git branch -a
可以看到由好多内核版本,这里我们选在 3.10,接下了提取内核,使用如下的命令
git checkout remotes/origin/android-goldfish-3.10完成之后可以观察到当前目录下多了好多文件,这就是我们需要的 android-goldfish-3.10 的内核源码
之后对 Makefile 文件进行配置,配置如下:
保存退出之后执行如下命令,对板子选择:
make goldfish_armv7_defconfig
接着使用如下命令对内核进行编译:
make -j4
make 后面的 -j4 选项是4线程编译,如果自己的机子配置更高,可以使用更多线程编译,编译的速度会快很多。
编译完成之后在 boot目录产生如下文件,如下:
对内核进行配置,打开 printk 和 KGDB调试功能,使用下面命令对内核进行配置:
make menuconfig做如下选择:
之后对内核进行配置,打开 printk 和 KGDB 调试功能,这样以后才能看到内核答应出来的信息,具体的配置如下:
进入Kernel hacking,做如下的选择
保存退出,OK 重新编译内核……
make -j4
6.android源码的编译
android源码编译是个漫长的过程,以我机子的配置,编译花费时间 more than seven hours。
所以 就等它慢慢的编译吧,自己可以去打几场篮球外加鱼塘边几个小时的垂钓,回来之后,将鱼塘里调到的鱼洗干净,然后再去超市买包上等的火锅底料(如果没有在鱼塘里调到鱼,可以顺便在超市买上几条……呵呵),然后开始火锅,这时就等火锅煮着吧,去看看有没有编译好,看来高估自己的机子了,居然还在编译……那就专心的去吃火锅吧,打球钓鱼也累了一天了,品尝着美味的火锅喝着清爽的啤酒……一小时之后,火锅吃完,再去看看,谢天谢地终于编译好了,真是个漫长的过程……结果如下:
解压下载的 android源码 ,进入得到的 android源码目录,查看内容如下:
执行如下命令配置 android编译之前的最后变量
接着使用如下命令进行编译:
make -j4慢慢的等待 more than seven hours later……
好了,编译好的文件位于
android源码编译结束……下面进行模拟器上验证!
7.在模拟器上验证 system 和 zImage内核
进入android开发工具中的 ADT 目录,运行eclipse
建立一个模拟器,详细步骤如下图所示:
模拟器建好之后,就可以用上面编译好的 system文件系统 和 zImage 内核启动模拟器,在模拟上进行验证,使用如下命令启动模拟器,可以指定所使用的内核,命令如下:
emulator -verbose -show-kernel -kernel /media/tsy/data/android_src/goldfish/arch/arm/boot/zImage -avd Device_Test
在启动内核之前我们可以在内核中添加 printk 内核打印语句,提供验证使用
在platform.c文件中增加几天内核打印信息,具体如下图所示:
重新编译内核,结束之后启动模拟器,效果如下图所示:
由上图可以看到,我们增加的内核打印信息也在模拟器启动时,被打印出来,证明调用的是我们自己编译的内核
正常启动成功,效果图如下图所示:
OK !接下来查看内核信息
这里有个问题,两者的时间对不上,不知道为什么,还在寻找答案……
OK!android4.4.2源码和内核的编译到此结束……