Android源码下载和编译总结

来源:互联网 发布:晋城网络电视台直播 编辑:程序博客网 时间:2024/05/16 05:24

前几天常用的笔记本电脑挂了,要拿去维修,于是就准备用另一台备用电脑来重新下载和编译一下Android源码,以便工作研究之用。鉴于最近一直都有人问下载和编译Android源码的问题,并且我上一次写Android源码编译的文章已经是2011年的事情,于是就趁这个机会写篇文章总结一下。

首先说说机器配置,最好还是要高一点,不要用虚拟机了。我平时用的笔记本配置是CPU I7,内存4G,硬盘500G。备用的台式机是CPU I5,内存16G,硬盘500G。编译的时候明显是后者更有优势。所以关键还是要内存大一些啊~
再说说网络问题,反正不翻墙是不行的。翻了墙,还得自己的带宽好一些,不然下几天都下不完。以Android 4.3为例,下载回来的源码有25+G,编译后有41+G。这么大的工程网络不好行吗?经常有人让我将自己的下载好的源码上传到网盘去让大家下载。要打包上传这些大的工程也够呛,甚至比从官网下载还够呛。我试过打包Android 2.3的代码,打包前有10.5G,打包后有8.4G,花了大半天时间,从官网下载时间不用1个小时。等你从网盘下载回来再解压,又是要漫长的等待。所以说要别人打包上传还真不如自己去官网下。网上有很多翻墙的教程。如果这个也懒得去学,那就没办法了。这里给的一个建议是,尽量在公司下载,因为一般来说,公司的网络带宽肯定比家里好。人性化一点的公司还会帮你翻好墙了,你直接下载就行。

怎么初始化环境和下载官网都已经给出很详细的教程了(http://source.android.com/source/initializing.html、http://source.android.com/source/downloading.html),所以这里也不多说了,只是提一下其中可能涉及到的问题。
首先是系统问题。Android源码目前只支持在Linux和Mac系统下编译,不支持Windows系统。Linux系统的话官方推荐的就是Ubuntu。我用的是Ubuntu,所以这里就只说Ubuntu了。早期的时候,官方推荐的是Ubuntu 10.04,现在推荐的是Ubuntu 12.04。除了这两个版本,我还用过11.04和13.04,都能成功编译。这次重新下载Android源码后用的是14.04,也能成功编译。对于官网上有支持的系统,就直接按照它说的去安装一些依赖包就行了,没有支持的系统你也一样的去安装那些依赖包就行了。
重点说说Ubuntu 12.04。因为是官方现在支持的系统,这次重新下载Android源码的时候,我开始的时候选择的也是Ubuntu 12.04,而且是可以从Ubuntu官网上可以下载得到的12.04.4和12.04.5。在要安装的依赖包中,有一个叫做libgl1-mesa-glx:i386的,用apt-get install命令安装它的时候,会提示有冲突,推荐你安装另外一个叫libgl1-mesa-dri:i386的。如果你听信了它的推荐,那就只能节哀了。当你安装了再重启的时候就进不了系统了。这是因为安装libgl1-mesa-dri:i386会导致你原来机器上的libgl1-mesa-dri-lts-xxxxxx等库被卸载,而这些库是桌面环境所需要了。它们一旦被卸载,就肯定进不了桌面系统了。被卸载的库在你apt-get install libgl1-mesa-dri:i386会有提示的,因此你要认真看了。实际上,你需要安装的是libgl1-mesa-dri-lts-xxxxxx:i386库,而不是libgl1-mesa-dri:i386库。这样能保证你有正确的Android源码编译环境,以及能保证你重启后能正常进行系统。这一点是需要特别注意的,否则够折腾你一壶。
Ubuntu系统安装是非常方便的。如果你没有安装光盘,或者有安装光盘但是电脑没有光驱,就先从Ubuntu官网下载好镜像,并且准备好一个U盘,然后再按照下载一个叫Universal-USB-Installer的软件将下载好的镜像烧录到U盘去即可,最后就可以使用这个U盘作为启动盘来安装Ubuntu了。在安装的过程中,如果提示读不了文件之类的错误,那么就要使用另外一个U盘来干这活了。
再说说为什么我一开始选择Ubuntu 12.04,后来又改用Ubuntu 14.04,实在是迫于无奈。Ubuntu 12.04系统安装好,环境也初始化好之后,在下载Android源码的过程中,下载到99%的时候网络好像就挂住了,一直不不动,不提示成功也不提示失败。这个问题是不少人遇到过的。官网给出的解决方案(http://source.android.com/source/known-issues.html)是在当会终端中执行sysctl -w net.ipv4.tcp_window_scaling=0命令禁止TCP滑动窗口缩放因子。我试了Ubuntu 12.04.4和Ubuntu 12.04.5,都不行,于是就只好换成Ubuntu 14.04了。所以如果你碰到这个问题,按照官网说的方法不能解决,就换个版本的Ubuntu,反正根据前面说的,也不用担心编译不了Android源码。

不过如果你编译的是Android 4.0以及之前的源码,可能会碰到很多编译问题。这些编译问题都是由于编译器(gcc)版本太高造成的,因此对于不能编译的模块,只要稍微修改一下Android.mk脚本就可以了。虽然编译错误会有很多,但是你用每一个错误的关键字去网上搜,都能找到答案。我用官方不支持的13.04和14.04编译过Android 4.0.3、4.1.1、4.2、4.3和4.4,除了4.0.3,其它都能顺利编译通过,只有4.0.3需要按照前面说的逐个修改编译脚本来解决。

关于编译环境的初始化问题,还有一个很讨厌的JDK安装问题。Ubuntu没有可以直接apt-get install安装的JDK源,因此目前最好的方式还是直接到Oracel上去把JDK的bin包(http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR)下载回来手动安装。至于这个bin包怎么在Ubuntu安装,网上有很多的教程,并且安装后怎么将这个JDK设置为默认JAVA环境,也有很多教程,这里也不多说了。

关于编译环境的最后一个问题是,一定是安装64位的Ubuntu,因为这是官方要求的......
总结来说,Android源码下载和编译,最重要的还是下载,只能把源码完整地下载回来,编译都没有问题,就算有问题也很好解决,因为很多人已经在你之前遇到了,并且给出了答案,你要做的就是善于从网上找到这些答案。
0 0
原创粉丝点击