Ubuntu18 环境下编译android源码

770 阅读2分钟

「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

1. 安装git和repo并配置

安装git通过下面命令实现

sudo apt-get install git

另外还需要配置好git的user.email和user.name

git config --global user.name "your name"

git config --global user.email ["XXX@XXX.com"](mailto:)

由于我们是通过repo来拉取android源码的,还得安装配置repo

git clone aosp.tuna.tsinghua.edu.cn/git-repo/

chmod a+x git-repo/repo

添加repo(路径目录如:~/git-repo/repo)到PATH环境变量

export PATH=~/git-repo:$PATH

修改~/bin/repo 中的REPO_URL 字段,将REPO_URL替换为清华镜像地址,以避免下载android源码时可能出现的无法连接到 gerrit.googlesource.com问题。

REPO_URL = 'mirrors.tuna.tsinghua.edu.cn/git/git-rep…'

2. 下载Android源码

首先创建一个自己存放源码的目录,我是放在~/Android/source路径下的,然后cd到对应的路径下执行下面命令

repo init -u aosp.tuna.tsinghua.edu.cn/platform/ma…

同步android-8.1.0_r41分支并拉取对应分支源码

repo init -u aosp.tuna.tsinghua.edu.cn/platform/ma… -b android-8.1.0_r41

repo sync

过程时间较长,可能需要几个小时

3. Ubuntu 18.04编译环境配置

首先得配置java8

sudo apt-get install openjdk-8-jdk

sudo apt-get install openjdk-8-jre

注意这里是配置openjdk,不要弄错了

然后配置在ubantu 18.04中编译android源码需要的一些依赖

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386

sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev

sudo apt-get install git-core gnupg flex bison gperf build-essential  

sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib

sudo apt-get install libc6-dev-i386 

sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev

sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

sudo apt-get install lib32z-dev ccache

无法安装libesd0-dev解决方法

sudo vim /etc/apt/sources.list  //在行尾添加如下两行的内容

deb us.archive.ubuntu.com/ubuntu/ xenial main universe

deb-src us.archive.ubuntu.com/ubuntu/ xenial main universe

 

4. 编译Android源码

首先cd到应的源码目路,初始化编译环境

. build/envsetup.sh

初始化编译环境后,引入了一些执行脚本,其中就包括马上要使用的lunch 指令。通过lunch指令可以设置编译目标,所谓的编译目标就是生成的镜像 要运行在什么样的设备上。这里我们设置的编译目标是aosp_arm64-eng,因 此执行指令

lunch aosp_arm64-eng

最后,我们便可通过如下命令来开始编译andriod源码

make -j8

编译时遇到了这个错误:

You have tried to change the API from what has been previously approved.

解决方法:

make clean

rm framework/base/api/curent.txt

make update-api

lunch full-eng

make -j8

5. 运行Android模拟器

emulator