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