先看下我的计算机的配置
computer.png
这里我们使用虚拟机来安装ubuntu。至于VMware具体安装方法大家自行百度。这里贴出我所用的版本。
vmware.png
安装完VMware后就是安装ubuntu。先下载系统镜像ubuntu
ubuntu.png
接下来就是在vmware中安装ubuntu。步骤大家可以自己百度,这里就不再累述。但有一点要注意给ubuntu分配的空间一点要充足。我建议150G以上,否则到时候编译了一半,空间不足那就很尴尬了。我就吃过这个亏,所以这个坑大家尽量跳过。这里贴出我的配置:
ubuntu_set.png
以上安装完ubuntu后。我们启动ubuntu,开始安装必备的软件。
sudo apt-get install git
然后配置用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"
更多的操作可参考Git常用命令
Ubuntu16.04的安装源已经默认没有openjdk了,所以要自己手动添加仓库
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
开始安装
sudo apt-get install openjdk-8-jdk
由于这里我们是编译最新的android源码,所以安装的是jdk8。 如果是编译其他版本则,按照需要去安装对应的版本。
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
这里我已亲测安装时没什么问题的。 到现在为止,我们的编译环境已经准备完毕了,接下来就是下载源码了
由于android的源码很大,而且有些地方还需要访问外国网站。所以我们使用清华大学的镜像。详细步骤Android 镜像使用帮助有详细说明。这里我就简要写下步骤。
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
这里最好将加入到环境变量中,这样以后每次启动都不用再设置PATH
vim ~/.bashrc
bashrc.png
在最后两行设置PATH。最后刷新。
source ~/.bashrc
由于源码很大,直接下载可能中途会失败、或者很慢的情况,所以这里先下载初始化包。大概有30几个G
所有代码都是从隐藏的 .repo 目录中 checkout 出来的,所以aosp解压后只有 .repo 目录。进入到aosp同步一下即可得到代码。
repo sync
进入到源码根目录下
source build/envsetup.sh
lunch aosp_arm64-eng
或者直接输入lunch。
142377-030890ab8be7bc46.jpg
然后选择自己想要的类型。这里我们就选择第一个aosp_arm-eng。
make -j4
注意这里的-j4,要根据自己机器的cpu核心数来决定。我这里用的是4个线程。 接下来就进入到了编译过程。这将会是一个漫长的过程。根据你机器的配置所消耗的时间也不一定,而我这里花了接近1个小时40分钟(看来我的机器还是挺给力的,哈哈!)。当你看到最后一串绿色的#### build completed successfully **** ####
说明你已经成功了
QQ截图20170929230721.png
直接在当前终端输入
emulator
3.png
QQ截图20170929231629.png
大功告成。
编译产生的文件就在 out目录下。而最终的三个镜像文件ramdisk.img,system.img,userdata.img以及它们对应的目录树root在 out/target/product/generic
下
三个镜像文件及其三个目录树之间的生成关系是我们进行ROM制作的基础
img.png
make clobber
也就是删除了out目录以及下面的所有的文件。