博主是在Ubuntu16.04下编译Android 6.0.1的源码。
首先需要获取到Android源码,有很多种方式,大家可以自行google。博主是在网上分享的一个百度云链接中下载的,方便省事,需要链接的可以私信我或者给我留言。
Android 6.0.1源码目录如下图
编译Android需要安装OpenJDK 7。博主之前系统中有安装Java官网的JDK,最后发现并不能编译。下载OpenJDK的方法:
需要先指定ppa,不然默认下载的是openjdk-8-jdk
sudo add-apt-repository ppa:openjdk-r/ppa
下载
sudo apt-get update
sudo apt-get install openjdk-7-jdk
然后,需要安装依赖
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
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 libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
此外,还需要修改源码的一行代码。(如果不修改会报错,大家如果想尝试看看是什么错,也可以不修改哈哈)
修改/art/build/Android.common_build.mk文件第75行,将原来的代码
ifneq ($(WITHOUT_HOST_CLANG),true)
修改为
ifeq ($(WITHOUT_HOST_CLANG),false)
接下来,正式开始编译。
首先初始化编译环境
source build/envsetup.sh
然后通过lunch命令选择编译目标
博主选择目标为aosp_arm64-eng
lunch aosp_arm64-eng
开始编译
make -j8
编译成功
可以运行Android模拟器了!