编译Android源码和内核源码的归纳总结

经过一个多星期的努力,终于在零基础的情况下在ubuntu-12.04-desktop-amd64(64位Ubuntu系统)成功编译了android-4.0.3的源码和Linux version 2.6.29的linux内核源码。期间遇到很多困难,好几次想放弃了,不过只要坚持并找到正确的方法,最后就一定能够成功。

注意事项:
在编译过程中,最需要注意的就是版本问题。uabntu的版本和源码的版本最好能够互相对应。这样在开编译过程中才能避免一些怪异的错误。ubantu和Android源码都是不断更新的,我敢说开发人员肯定是在一定的系统上开发的。假设现在推出了一套新的Android6.0版本是在ubantu16.04上开发的。那么在16.04上肯定能完美运行,因为这是开发人员经过不断的修复更新的结果。然而,这并不能保证新开发出来的Android版本能在原来的ubantu10.03,ubantu12.04上完美编译。除非开发人员做了向前兼容的工作。但是根据这一个星期来找到的错误来说,实际情况很肯能并非如此。所以找对版本很重要。
当然,如果你是大神,可以自己修改源码来应对各种erro。那就随便哪个版本啦。你想知道什么才是对应的版本,我不知道,得问开发源码的人,我是试过多个版本,发现路路不通,最后根据前辈写的博客和自己的聪明才智(嘻嘻)才最终成功的。

这边给出这个博客的地址:http://blog.csdn.net/jiangwei0910410003/article/details/37988637/
这个博客的博主因为一个问题没能成功在模拟器上使用2.6.29的内核运行4.0.3的android源码编译出来的Android系统,但成功编译了4.0.3的android源码。最后他换成了2.3.7的android源码。成功运行了。

编译源码的目的:过程很重要,TODO

分两部分来进行,编译Android源码和编译内核源码,废话不多说开始准备:

安装ubantu系统:
不是ubantu系统的话可以使用虚拟机。下载地址:http://pan.baidu.com/s/1gfHb9Ph
注意事项,因为源码的文件都比较大,在分配磁盘大小时建议在60G以上,最好能分配2G或3G内存。
ubantu12.04镜像文件。下载地址:http://pan.baidu.com/s/1bpDfWKn
编译Android源码:

准备工作:
1.下载JDK6,android4.0.3只能用6这个版本。下载地址:http://pan.baidu.com/s/1gfvwSaJ
2.下载android源码。http://pan.baidu.com/s/1i5uCSex

安装JDK参考博客:http://weixiaolu.iteye.com/blog/1401786
需要注意的是环境配置的时候要填写正确的路径地址。

解压源码到uabntu系统下,文件比较大,建议先将压缩文件复制到虚拟机下,在虚拟机解压文件。这边给一个解压命令很全的博客地址:http://blog.csdn.net/jiangwei0910410003/article/details/37997899

JDK有了,源码也有了。下面就开始编译Android源码了。
但是在编译源码之前,要先更新一下ubantu上的软件:sudo apt-get update
如果更新失败,那一定是更新源的问题,所谓更新源就是更新来源。切换更新源。切换方法参考这个文档:http://pan.baidu.com/s/1jIdFPQ2 这里面有关于如何更新软件的问题。
另外还要安装很多软件才能正常编译,具体要安装的软件参考这个博客:http://jileniao.net/linux-android-building.html

开始编译:分别执行
①source build/envsetup.sh
②lunch
此时要选择一个编译平台
③make -jn
这里的n注意取值,网上一般说法是CPU核数的两倍,还有一说是CPU核数加1。到底哪个更准确我也没有验证。
但要值得提醒的是,虽然n用一个大的值会使编译速度加快,但如果n取值过大,编译是会报错的。

编译时间会比较长,而且也会出很多错,多看出错的log多思考。

编译内核源码。
这个比起上面的内容步骤上会相对简单一点,关键是找着好的博客,方法对了。
内核源码下载地址:http://pan.baidu.com/s/1mi4Gv0k
参考博客地址:http://blog.csdn.net/flydream0/article/details/7070392
需要注意的地方就是在配置环境变量的时候一定要注意路径是否正确。另外,在配置环境变量的时候要使用root用户。在编写完环境变量后一定要用命令:source ~/.bashrc 或 重启电脑,来使配置的变量生效。

最后给出俩张我成功编译的Android系统运行在模拟器上的效果图:这里写图片描述这里写图片描述

看设置里面的Android版本和内核版本,已经换成我下载的版本了。

直接执行 emulator 提示 emulator: WARNING: system partition size adjusted to match image file (166 MB > 66 MB)
所需空间不足
影响:没什么影响,就是运行的慢一点。
解决方法:
emulator 加入参数 -partition-size 1024 (大于系统所要求的尺寸)即可,例如 emulator -partition-size 1024

没有更多推荐了,返回首页