提示
[2020/04/16更新]
建议使用docker
进行编译,省心省力
见:使用docker编译安卓源码
概述
之前编译了AOSP 5.1.1源码,没有写文章记录。这次记录一下编译安卓6.0.0_r1的过程,流程跟编译5.1.1大致一样
步骤
配置软件源
sudo vim /etc/apt/sources.list
1 | deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse |
启动i386架构
1 | sudo dpkg --add-architecture i386 |
更新软件源
1 | sudo apt-get update |
安装依赖
程序包
1 | sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 \ |
JDK
官网查询得知,编译安卓5.x-6.0都是使用JDK7
下载地址: https://pan.baidu.com/s/1AcnT-D9x8EE0Z6Jzuxgscw 提取码: hqh5
将openJDK7解压到/usr/lib/jvm
目录下:
1 | mkdir /usr/lib/jvm |
最终文件夹名为/usr/lib/jvm/openjdk-1.7.0_121
修改/etc/profile
文件,在末尾添加:
1 | export JAVA_HOME=/usr/lib/jvm/openjdk-1.7.0_121 |
之后执行source /etc/profile
,从而免重启使环境变量在当前bash环境下生效,
然后执行以下命令测试java是否正常:
1 | java -version |
下载源码
有两种选择,直接下载压缩包或者使用repo下载
下载压缩包
使用repo下载
repo可使用中科大版本或清华版本
ustc - AOSP(Android) 镜像使用帮助
tuna - AOSP(Android) 镜像使用帮助
以清华源为例~/.bashrc
添加以下内容:
1 | export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ |
再执行
1 | mkdir aosp |
下载驱动文件
在官网找到对应型号和版本的驱动,并解压到源码目录下
然后逐一运行解压出的脚本,读到第8条第e项之后输入I ACCEPT
解压出驱动
编译前准备
修改mk文件
修改 art/build/Android.common_build.mk
文件,定位到75行
将ifneq ($(WITHOUT_HOST_CLANG),true)
改为ifeq ($(WITHOUT_HOST_CLANG),false)
切换python
版本
如果python默认版本为python2
,则不需要进行这一步
1 | sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 |
选择python2
的序号并回车
使用ccache
为提高编译效率,使用ccache加速编译
(1) 在~/.bashrc
文件末尾添加:export USE_CCACHE=1
(2) 在源码目录执行:prebuilts/misc/linux-x86/ccache/ccache -M 100G
PS:据说该设置会保存到CCACHE_DIR中,且该命令是长效的,不会因系统重启而失效。
但是可能因为其他原因失效,导致不使用ccache编译,所以建议每次编译前手动设置一下
编译
执行export LC_ALL=C
然后导入编译Android源码所需的环境:source build/envsetup.sh
执行lunch
选择编译目标make -j26
多线程编译,建议设置线程数为cpu核心数的2倍(grep ^processor /proc/cpuinfo | wc -l
查看)
耐心等待编译完成
刷入
在out/target/product/型号
下找到生成的镜像,fastboot刷入即可
参考
Ubuntu 18.04.3 LTS 编译安卓6.0.0_r1
E:Unable to locate package libssl-dev:i386
ubuntu18.04无法安装libesd0-dev【学习笔记】