之前编译环境是刚进公司的时候老同志帮我搞定的,现在离职以后第一次要遍android源码,提供源码的人还只给了我一个地址https://source.android.com/source/initializing.html,蛋疼的是需要翻墙才能登,没办法只能问万能的度娘,于是乎找到这篇博客,感谢这位大神解了我燃眉之急,小弟在此谢过,贴上原博路径:基于Ubuntu14.04系统搭建Android源码编译环境http://www.kaelli.com/10.html
在下载完了Android源码后,当然下一步工作就是编译源码了。然而目前我们手头只有一个装载着源码却没有编译环境的Ubuntu系统,所以还是先把编译环境给搞定吧。
同样的,Google官方也提供了非常详尽的文档,英语水平过关的朋友可以参考https://source.android.com/source/initializing.html。然而,同样的,还是有很多人的英语水平比较捉急,所以继续看这篇文章吧。
Google推荐我们使用最新的LTS版Ubuntu系统来编译源码,而目前最新的就是Ubuntu 14.04了,当然得是64位的。貌似使用 OS X也可以编译,然而我自己并没有使用Mac,所以就不在考虑之内了。
安装JDK
Android的应用层以及Framework层的一部分都是用Java写的,所以肯定得安装JDK了。在Android 4.4和更老的版本中,使用的是Oracle JDK,而到了Android 5.0以后,Google将其换为OpenJDK(也许是为了专利考虑?),而在Ubuntu中安装OpenJDK是特别容易的:
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk
安装后,需要把Java环境设置一下:
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
如果你想编译老一些的版本,那么就会需要安装更老的OracleJDK了,从Gingerbread (2.3)到Kitkat(4.4)需要的是JDK6,而更老的就要用JDK5了。作为一个只是研究Android源码的人来说,应该不需要考虑这些问题了。而如果是一些因为工作需要而要编译老版本的Android,那么就真的要去找老版本的JDK了。
安装编译Android需要的包
$ sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip
这一步在Ubuntu 14.04系统里显得是如此简单,我还很清楚的记得,如果是10.04或者12.04系统,这一步需要安装的包会非常多,大概会有几十个。当然,也许这一步并不会特别顺利,比如下图:
![g++-multilib-depends-gcc-multilib](http://www.kaelli.com/wp-content/uploads/2015/07/g-multilib-depends-gcc-multilib.png)
好吧,让人蛋疼的依赖问题来了,这是用Linux最不爽的地方之一了。然而我们并无其他选择,只能想办法解决这种问题了。最简单的尝试是,自己手动安装一下gcc-multilib:
$ sudo apt-get install gcc-multilib
$ sudo apt-get install g++-multilib
搞定了这个问题后,再重新执行一遍之前的安装命令。
$ sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip
这次应该会顺利的安装所有的依赖包,安装完了后,有强迫症的我会再执行一遍安装命令,来确认一下是否完全搞定:
![编译Android需要的所有的包安装结束](http://www.kaelli.com/wp-content/uploads/2015/07/all-required-packages-installed-complete.png)
好吧,所有的包确实已经安装完毕了。
到这里,实际上你的Ubuntu 14.04系统已经可以很顺利的编译Android源码了。结合之前下载Android 5.1.1_r8源码,就可以轻松编译,来感受一下与Android应用层开发完全不一样的体验了。