编译 aosp 源码

字数 169阅读 336

下载 aosp 源码:

mkdir sources/android/9
mkdir sources/bin
cd sources/bin
// 使用清华提供的镜像
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
vim ~/.bashrc
// 添加环境变量
export PATH=/sources/bin/:$PATH
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
// 保存退出后,更新变量
source ~/.bashrc
// 选择分支
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r3
// 同步代码
repo sync

准备编译环境:
参考 https://source.android.com/source/initializing.html
1.安装 jdk8

sudo apt-get update
sudo apt-get install openjdk-8-jdk

2.更新默认的 Java 版本 - 可选

sudo update-alternatives --config java
sudo update-alternatives --config javac

3.使用 ubuntu 14+,需要安装以下依赖包:

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

4.修改输出目录
默认目录为源码下的out目录,可以使用

export OUT_DIR_COMMON_BASE=/sources/android/out

修改输出目录。
5.优化编译环境(可选)

// 在源码根目录执行
export USE_CCACHE=1
export CCACHE_DIR=/sources/android/8/.ccache
prebuilts/misc/linux-x86/ccache/ccache -M 50G

5.开始编译

cd aosp
source build/envsetup.sh 
// 编译前清理(删除build文件夹)
make clobber
lunch // 6 我需要在模拟器中使用,所以这里选择的x86_64,可以根据情况选择编译类型
make -j8

系统镜像输出文件为:

out/target/product/generic_x86_64/
image.png

如果在模拟器中运行镜像文件,主要的系统文件为 system.img,我下载了 sdk 提供的9.0的镜像,直接将编译完成的system-qemu.img 镜像将system.img替换掉即可。