1.环境准备
1.1 虚拟机环境及配置
- CPU:i7-13700
- 电脑内存:32G
- 虚拟机:Ubuntu16.04
- 虚拟机硬盘:500G(不要少于300G)
- aosp版本:安卓8.1
1.2 运行环境配置
编译环境准备参考:source.android.com/source/init…
- java环境:openjdk8
sudo apt-get install openjdk-8-jdk
安装后使用命令查看java版本
java -version
安装成功后会有如下显示
xxx@ubuntu:~$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
- 安装需要的软件包
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 libgl1-mesa-dev libxml2-utils xsltproc unzip
3.安装Repo Android 项目使用Repo工具管理,下载Android源码需要使用repo
//安装repo
sudo apt-get update
sudo apt-get install repo
//检查repo是否安装成功
repo version
如果有如下输出则证明安装成功:
ubuntu:~$ repo version
<repo not installed>
repo launcher version 2.45
2.源码下载
源码下载主要有两种方式:
- 使用repo下载
- 下载清华镜像每月更新的初始化包
2.1 repo下载
如果能够访问google可以从googlesource下载
//创建一个文件夹存放源码,如aosp
mkdir aosp
cd aosp
使用-b参数进行指定分支
$ repo init -b android-8.1.0_r1 -u https://android.googlesource.com/platform/manifest
//同步源码,-j表示线程数
repo sync -c --no-tags -j8
无法访问google可以使用国内的镜像源:
repo init -u https://aosp.tuna.tsinghua.edu.cn//platform/manifest -b android-8.1.0_r1
2.2 使用每月更新的初始化包
安装包下载地址:mirrors.tuna.tsinghua.edu.cn/aosp-monthl… 下载完成后解压并同步一次最新代码:
//解压代码
tar xf aosp-latest.tar
cd AOSP //解压后得到的 AOSP 工程目录
//此时目录里面是空的,只有一个隐藏的 .repo 目录
repo sync//同步一遍即可得到完整目录
3.源码编译
3.1 初始化编译环境
首先要执行envsetup.sh脚本,其中记录着编译过程中所需的各种函数实现
source ./build/envsetup.sh
其次选择要编译的cpu架构:输入launch,选择6(在模拟器上运行)
@ubuntu:~/Downloads/android-8.1.0_r1$ lunch
You're building on Linux
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_mips-eng
4. aosp_mips64-eng
5. aosp_x86-eng
6. aosp_x86_64-eng
7. full_fugu-userdebug
8. aosp_fugu-userdebug
9. aosp_car_emu_arm-userdebug
10. aosp_car_emu_arm64-userdebug
11. aosp_car_emu_x86-userdebug
12. aosp_car_emu_x86_64-userdebug
13. mini_emulator_arm64-userdebug
14. m_e_arm-userdebug
15. m_e_mips64-eng
16. m_e_mips-userdebug
17. mini_emulator_x86_64-userdebug
18. mini_emulator_x86-userdebug
19. uml-userdebug
20. aosp_dragon-userdebug
21. aosp_dragon-eng
22. aosp_marlin-userdebug
23. aosp_marlin_svelte-userdebug
24. aosp_sailfish-userdebug
25. aosp_walleye-userdebug
26. aosp_walleye_test-userdebug
27. aosp_taimen-userdebug
28. aosp_angler-userdebug
29. aosp_bullhead-userdebug
30. aosp_bullhead_svelte-userdebug
31. hikey-userdebug
32. hikey960-userdebug
Which would you like? [aosp_arm-eng] 6
输入make开始正式编译,-j参数表示用多少个线程,一般用两倍的cpu核数
make -j9
编译时间根据设备的性能而定,编译成功后会有如下输出
#### build completed successfully (01:07 (mm:ss)) ####
输入emulator即可启动模拟器