「这是我参与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