使用传统方式同步代码(不使用初始化包的方式,因为太大了)

环境准备

ubuntu: 20.04
编译安卓版本: android-10.0.0_r17(适用于pixel/pixel xl)
内存: 16G
硬盘: 600G
CPU: 1核16线程

1. 安装必备软件

apt-get install git
apt-get install curl

git config --global user.name "jiangfubang"
git config --global user.email luckybang@163.com

# 修改默认Python
sudo unlink /usr/bin/python
sudo ln -s /usr/bin/python3.8 /usr/bin/python

# 卸载vi-tiny并安装vim-full
apt-get remove vim-common
apt-get install vim

2. 创建bin目录,并将bin目录加入环境变量

mkdir ~/bin
PATH=~/bin:$PATH

3. 下载repo启动器赋予可执行权限(所有下载均使用清华镜像源)

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo

4. 切换repo更新自己的源

vi ~/.bashrc
# 将下面代码添加到.bashrc文件最后一行
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
# 使之生效
source ~/.bashrc

清华源可能会报server certificate verification failed异常,可以执行下面的命令解决
apt install apt-transport-https ca-certificates

5. 初始化repo,创建AOSP目录

mkdir ~/AOSP
cd ~/AOSP
# 指定分支版本
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r17
# 同步源码,这个过程会持续很久
repo sync -c -j8

-c表示同步当前分支
-j8表示开启8个线程

命令执行成功后如下图所示:
成功.png

6. 编译源码

a.安装jdk8
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
b.安装依赖
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig libncurses5
c.获取设备驱动 https://developers.google.com/android/drivers

下载设备驱动.png
本地解压两个驱动文件,然后上传到AOSP根目录

d.执行驱动文件

分别执行两个驱动文件,输入“I ACCEPT”完成执行

e.执行命令source build/envsetup.sh安装命令行
f.执行命令launch选择设备内核和编译版本
g.如果需要增加编译产品选项,需要修改AOSP/device/google/marlin/AndroidProducts.mk
i.执行命令make -j8开始编译

可能出现的问题

1. 编译aosp 8.1.0时增加编译产品选项的文件是AOSP/device/google/marlin/vendorsetup.sh

2. 编译aosp 8.1.0时遇到异常-语法错误,需要使用python2

apt-get install python2
unlink /usr/bin/python
ln -s /usr/bin/python2 /usr/bin/python

3. 编译aosp 8.1.0时遇到FAILED: setup-jack-server,需要修改文件/etc/java-8-openjdk/security/java.security,去掉“TLSv1, TLSv1.1”这两个关键字

修改后的样子.png

4. 编译aosp 8.1.0时遇到FAILED: out/target/product/generic/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp,需要在make之前调用export LC_ALL=C

最后修改:2022 年 10 月 26 日
如果觉得我的文章对你有用,请随意赞赏