在ubuntu16.04上编译android6.0源码

最近想自己编译一下android源码,上网查了不少资料,有很多都在说自己去谷歌下载源码,安装git,repo什么的,还有的文章说可以在windows下编译,安装个虚拟机就可以了,不过本人电脑配置有点低,在虚拟机跑的话可能会崩,所以,考虑再三,还是自己装一个ubuntu系统了;

我的电脑加了块250G的固态,所以,我分了100G的空间给了win10,剩下的全给了ubuntu,至于怎么安装双系统,网上一搜一大批,一个个看就好了,我是用了一下午去准备环境的,其实只要网速快的话,装系统是件很简单的事;

在安装好ubuntu之后,接下来就是对ubuntu的环境去进行设置了,之前没有接触过Linux系统,所以配置起来会有点慢,无非就是在网上搜教程了,搜各种命令而已;这里记录一下重点:

(1)配置java8环境:

         sudo add-apt-repository ppa:webupd8team/java

         sudo apt-get update

         sudo apt-get install oracle-java8-installer

这里有个问题,因为要编译的android 6.0源码是使用openjdk1.7的,所以只java8是编译不了的,我是因为一直用的jdk8,所以需要装一个jdk8方便,如果不需要,直接装openjdk1.7就可以了,这里也贴出配置openjdk的命令:

         sudo add-apt-repository ppa:openjdk-r/ppa

         sudo apt-get update

         sudo apt-get install openjdk-7-jdk

以及下面的关于jdk8和7之间切换的命令:

          $ sudo update-alternatives –config java

          $ sudo update-alternatives –config javac

          $ sudo update-alternatives –config javah

          $ sudo update-alternatives –config jar

(2)下载android6.0源码,这里贴出一个百度云下载地址:android 6.0源码下载

(3)通过这个方式下载会快很多,下载到的源码从a-j一共分10个文件,还有一个记录各文件的hash值,这位源码大佬很贴心,生怕下载错了或者漏下了,所以把各文件的hash值记录下来,可以通过md5sum 文件名命令去对比hash值是否相同,不相同的话需要重新下载,接下来通过cat Android6_r1_*>Android6_r1.tgz将下载好的文件压缩成一个tgz包,以防万一,使用md5sum Android6_r1.tgz再次进行对比,毕竟如果源码下错一点也不好玩;

(4)通过tar -zxvf Android6_r1.tgz解压源码,这个过程不是很慢,等一会就会好;

(5)安装各种依赖:

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential  
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib 
sudo apt-get install lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 
sudo lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache

为保证可以正确的编译下去,一定要保证上面的依赖都已经安装了!!!

(6)准备工作完成后,就可以开始进行编译

echo export USE_CCACHE=1 >> ~/.bashrc

prebuilts/misc/linux-x86/ccache/ccache -M 50G    这一句是设置高速缓存为50G,这样编译会快一点;

source build/envsetup.sh    导入编译Android源码所需的环境变量和其它参数

lunch    选定编译目标,直接选1就好了

make -j8 开8个线程进行编译

(7)接下来就是漫长的等待了。。。建议睡一觉

在编译的过程中,如果一次就编译成功的话,那么可以说是非常顺利了,我在编译过程中遇到很多坑,导致我足足编译了三天才成功,网上也搜了很多教程,期间遇到空间不足的问题,已经编译了四个小时了,但是提示我空间不足,最后心里就有那种想死的冲动,没办法,我之前预留了50多G的空间,但是最后还是不行,我是在ubuntu16.04里编译的,但是我使用的编译盘就是在windows盘里,起初只是抱着试一试的态度,发现其实可以,所以直接搬到win10盘里去跑了。

最后的最后,一句忠言,如果系统里存在jdk多个版本,那么最好就保留一个openjdk7,我是在第二天的编译到4个半小时的时候才发现java8其实是jdk版本导的鬼,我已经按照网上教程把jdk版本切换了,不知道为什么还是不行,所以,我索性把jdk8卸载了,只保留一个j7,最后终于成功。

当你看到这个界面的时候,那么就恭喜你,终于成功了,我当时看见了心里贼激动呢!!!

猜你喜欢

转载自blog.csdn.net/pgg_cold/article/details/80023392