Ubuntu16.04编译Android6.0源码

准备工作

环境要求:openJDK7其他版本的不行(如何安装自行百度),Android6.0源码,

安装依赖包:
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 libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install lib32z-dev ccache
在这个安装依赖包的过程中可能会遇到 E: Unable to correct problems, you have held broken pack 这个问题,请参考https://mp.csdn.net/mdeditor/87823160# 解决。

下载好源码之后,我们要将驱动文件加入源码中。我们可以在https://developers.google.com/android/nexus/drivers#hikey中找到对应设备与源码分支的硬件驱动。此时,上一步中的build码就该派上用场了,我们根据build码来找到对应的驱动程序,我们刚才选择的源码分支所对应的build码是KTU84P,因此,就下载此代号的驱动程序即可。
Ubuntu16.04编译Android6.0源码_第1张图片
下载得到的是三个tgz文件,我们只需依次解压三个文件,得到的是三个shell脚本文件,我们先将其置于源码根目录中。
Ubuntu16.04编译Android6.0源码_第2张图片
依次执行这三个脚本文件,这里要注意,三个脚本文件的作用是生成驱动文件,但是在执行操作前,它会让你阅读相关协议,你必须一直按enter键一行一行往下读,更不能一键摁到底,因为程序在最后会让你输入“I ACCEPT”,如果你一键摁到底,也就是说最后一步也摁enter键的话它就会执行默认操作,即不接受此协议,那生成驱动文件的操作就不会执行。这里有个小窍门,一直摁住enter,注意命令行中闪过的协议项,当读到第八项时可以放慢速度,一下一下的摁enter键了,最后慢慢的到最后一步,输入I ACCEPT即可。这三个文件都是这样的操作流程。上图展示了在执行完脚本文件后生成的驱动文件目录

编译

命令行进入源码目录:

1、初始化编译环境,输入 . build/envsetup.sh
会出现这样的效果。
Ubuntu16.04编译Android6.0源码_第3张图片
2、加载机型,输入lunch命令,会列出不同设备可能编译出的结果。
Ubuntu16.04编译Android6.0源码_第4张图片
在选择好设备之后,系统会生成详细的编译信息,这里我们可以再确认一下源码的分支,build号是否正确。
Ubuntu16.04编译Android6.0源码_第5张图片
然后我们就可以进行编译了,输入make –j12,j后面的参数取决于你电脑处理器的核心数,x=核心数*2,由于我的电脑是6核的,因此我选择12.

在经过将近三个小时的编译后,我们的源码终于编译完成,而此时,在源码根目录中多出了一个out目录,编译的结果就存放在里面。
Ubuntu16.04编译Android6.0源码_第6张图片

刷机

源码编译完成后,我们开始将编译好的系统烧录进手机中。首先,先将我们的Nexus 5连接到电脑上,注意一定要打开USB调试,连接后手机可能会提示电脑要调试这台手机,允许即可。然后,我们令手机进入recovery模式,还是刚才的terminal(在源码根目录下),输入以下命令:

sudo adb reboot bootloader

随后手机就会进入recovery模式。


然后,我们开始刷机:

fastboot flashall –w 或者 fastboot -w flashall

或者:进入目录 android/out/target/product/shamu
sudo fastboot flash system system.img
sudo fastboot flash userdata userdata.img
sudo fastboot flsah boot boot.img(boot可刷可不刷)

刷机的过程大概在一至两分钟左右,刷机结束后会自动开机。

刷机成功,我们看到了我们编译好的原生aosp版本的源码。
Ubuntu16.04编译Android6.0源码_第7张图片

你可能感兴趣的:(Ubuntu16.04编译Android6.0源码)