ubuntu16.0编译Android 8.0 Android O记录
一、必要的系统环境
硬盘200G,内存4G+,交换分区(swap)4G+(可装完系统后添加,见后面错误处理部分)
二、下载源码,国内可以在清华镜像站下载
地址:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
网上有很多教程,这里就不再累述了
三、然后安装编译时需要的三方库
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
安装open-jdk-8
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
四、开始编译
然后进入到Android源码目录,假设源码在用户根目录的aosp目录中:
cd ~/aosp
然后初始化编译环境,使用下面的命令:
source build/envsetup.sh
然后选择要编译的目标版本,先输入lunch命令
lunch
然后在显示的列表中选择你的目标版本,输入相应的数字,按回车即可
然后使用make开始编译,可以使用-j参数增加编译的线程以提高速度,线程数量为cpu核心数的2倍比较合适,比如你的cpu是4核的使用
make -j8
就可以了
五、遇到的错误
1、错误1:
03:00:11 ckati failed with: signal: killed
build/core/main.mk:21: recipe for target ‘run_soong_ui’ failed
make: *** [run_soong_ui] Error 1
解决方案1:
增加swap空间
增加办法:
cd /
增加4个G的交换空间
sudo dd if=/dev/zero of=/swp bs=10M count=400
sudo mkswap /swp
sudo swapon /swp
用free -m查看交换空间的情况
这个方法增加的是临时交换空间,如需一直保留,需要其他操作
参考链接:
https://blog.csdn.net/yellow_hill/article/details/38894317
解决方案2:
export LC_ALL=C
2、错误2:
JackServer提示out of memory
解决方案1:
增加虚拟机内存至最少4G
解决方案2:
修改jack server内存
步骤:
打开./prebuilts/sdk/tools/jack-admin
找到下面这一行
JACK_SERVER_VM_ARGUMENTS=”${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8}”
修改为
JACK_SERVER_VM_ARGUMENTS=”${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096M}”
保存jack-admin文件
在命令行执行
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
重启jack server
然后重新编译
3、错误3:
Error while parsing ‘/media/liuderu/新加卷/android-8.0.0_r1/out/target/common/obj/APPS/QuickSearchBox_intermediates/with-local/classes.dex.flags’:1
原因:路径中包含中文字符
4、错误4
FAILED: out/target/common/obj/PACKAGING/checktestapi-current-timestamp
先执行一次make update-api然后再执行make