VM 装置 Ubuntu18.04 编译 AOSP 11

电脑装备 :2020版 Macbook pro i5 16G RAM

vmware 装载体系 :Ubuntu 18.04

需求 :编译 Android 11 源码

Google 主张编译 AOSP 的 电脑装备至少需求 16G 的 RAM,250G 的磁盘空间。(主张先看一遍官方文档 ,挑选适宜自己的方案)

我这儿由于顾虑宿主体系,只分配了 8G 的 RAM,后边修正了交流空间去处理了这个内存不足的问题。 编译 Android 源码, 强烈主张 内存分配16 G 及以上 ,会少后边很多事。

我尝试过装置 Ubuntu 14.04 ,去编译Android 11 的源码, 但 Java 版别 得是openjdk 8,这儿会有一个问题,适宜14的jdk只要三个版别,我试了别离去装置适宜体系的两个版别,两个版别都会报出需求对方版别的装置提示 ,由于能力有限,没找到适宜的方法,就放弃了,假如有其他知道缘由的朋友,便利奉告下。

贴出官方关于14.04 版别的主张:

Ubuntu18.04  编译 AOSP 11 (一)

体系的装置这儿就不贴了,翻开 terminal ,输入以下指令。

一.环境装备

1.装置所需的软件包

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

2.指定 Python 版别为 Python3

运用指令检查版别
python3 --v
python —v
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2  //指定版别,并设置优先级 数字越大 权重越大

3.硬盘从头分区 (可省)

在刚开始的时分,我分配的硬盘空间其实是不行的 ,只要 200 G ,后边就呈现了挂载体系,由于一些骚操作导致下载空间不行等问题 。

假如你分配的硬盘空间不行的话,在 vmware 拓宽完之后, 还需求运用分区软件对进行分区。

sudo apt-get install Gparted //装置指令

装置完成之后,查找翻开

Ubuntu18.04  编译 AOSP 11 (一)

翻开应用,你能够看到分区状况和新增未分配的分区

Ubuntu18.04  编译 AOSP 11 (一)

这儿容量最大的是你的体系区, 把新增分配的空间区域分配给它。

4.下载源代码

装置repo

	sudo apt-get update
  sudo apt-get install repo

创立一个空目录

mkdir aosp
cd aosp

git的装备

git config --global user.name Your Name
git config --global user.email you@example.com
没有的话 请运用指令装置
  sudo apt-get install git

java的环境装备

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH

export _JAVA_OPTIONS=-Xmx4096m

下载源码

运用 wget 解析并下载url资源时回来了 403状况码后,我就加了个模拟的状况头, 这个方法 比直接

git clone 快点。

wget -U 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1 Safari/605.1.15' -O 'aosp-latest.tar' mirrors.tuna.tsinghua.edu.cn/aosp-monthl…

解压装置到 aosp 里

再别离履行这两条指令

repo init -u [https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest](https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest) -b android-11.0.0_r46

repo sync -c --no-tags

Ubuntu18.04  编译 AOSP 11 (一)

呈现这个提示 ,源码就同步完成了。

二.编译

1.进入 aosp目录下 ,初始化环境

source build/envsetup.sh make clobber

Ubuntu18.04  编译 AOSP 11 (一)

2.lunch

Ubuntu18.04  编译 AOSP 11 (一)

用来选编译目录的

lunch sdk_phone_x86_64 这儿弃用的原因 能够翻我后边的章节

仍是 用回 lunch aosp_x86_64-eng

make -j6 (m能够运用-jN参数处理并行任务。假如您没有提供-j参数,构建体系会自动挑选您认为最适宜您体系的并行任务计数。)

3.交流空间的分配 (依据实际状况在编译前履行)

swap (交流空间 ) 能够用作体系的虚拟内存运用。

由于只给了 8g ,后边编译的时分,会一向报错,是内存不足的问题。

Linux 体系默许的交流空间 只要 2G, 前面内存是仅有 8G,交流空间我分了 20G ,Linux 在内存不足时运用交流空间的容量。

free -m 去检查交流空间的巨细。

swapon -s 检查swap 的详情

履行sudo swapon -s指令,检查是否已经存在swap file

有的话先禁用。

sudo swapoff /swapfile

修正 swap的空间

sudo dd if=/dev/zero of=/swapfile bs=1M count=20480

前面分配的时间需求等候下,履行完指令窗口会回来的

设置文件为“swap file”类型

sudo mkswap /swapfile

检查 文件的权限

ls -lh /swapfile

修正权限

sudo chmod 600 /swapfile

挂载 (已挂载的可忽略)

sudo mkswap /swapfile

启用swapfile

sudo swapon /swapfile

free -m 再次检查内存状况

到这儿 你能够再开一个 termail ,运用 top 指令检查 体系空间的运用状况。其实还没用上的。

这时需求修正体系装备

sudo vi /etc/fstab

假如已经存在了 你修正的 swapfile,检查是否和下面这条指令相同,不相同就改。

/swapfile swap swap defaults 0 0

esc shift 切换到指令输入模式。

q! 不保存退出

wq 保存退出

三.编译遇到的问题

1.内存不行,swap 封闭了

Ubuntu18.04  编译 AOSP 11 (一)

处理方法: 修正了swap 交流空间巨细

2.Java堆内存不行

Ubuntu18.04  编译 AOSP 11 (一)

处理方法:

1).在~/.bashrc 文件 末尾加入如下指令,并wq 保存退出 。

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH

export _JAVA_OPTIONS=-Xmx4096m

2).履行 source ~/.bashrc

3).找到 aosp/build/soong/java/droidstubs.go 文件,双击翻开,查找“cmd.BuiltTool(“metalava”)”定位到代码处,然后新加语句:

Flag("-J-Xmx6114m").

Ubuntu18.04  编译 AOSP 11 (一)

3.lunch sdk_phone_x86_64 的报错

Ubuntu18.04  编译 AOSP 11 (一)

本来计划运用 sdk_phone_x86_6 这个版别去编译,试过几次 一向很慢,我没等结果以为是Java 对内存的不足,环境变量上设置后仍是很慢, 后边看报错信息, 日志说 我这个编译版别缺乏文件 ,于是仍是换回本来的,希望后边能跑通模拟器

android.googlesource.com/platform/bu…

漫长的等候,终于编译完成

Ubuntu18.04  编译 AOSP 11 (一)

Thanks for:

主张先看完官方文档。

source.android.com/docs/setup/…

www.jianshu.com/p/53941de91…

/post/684490…