1.repo工具下载及安装
mkdir ~/android-repo
cd ~/android-repo
git clone https://aosp.tuna.tsinghua.edu.cn/git-repo/
chmod a+x git-repo/repo
然后添加repo(路径目录如:~/git-repo/repo)到PATH环境变量
export PATH=~/git-repo:$PATH
然后到打开~/git-repo/repo文件,将REPO_URL替换为清华镜像地址,以避免下载android源码时可能出现的无法连接到 gerrit.googlesource.com问题。
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
2.Android 源码下载
首先创建一个自己存放源码的目录,cd 到对应的路径下执行下面命令:
mkdir ~/android-repo/android-source
cd ~/android-repo/android-source
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
然后执行如下命令可以查看可以下载的android源码分支
cd .repo/manifests.git/
git branch -a
这里同步android-8.1.0_r41分支并拉取对应分支源码
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r41
repo sync
这个过程时间较长,可能需要几个小时,期间该干嘛干嘛。
注意: 在 ubuntu 使用 gparted 工具分配至少 200 G 空间, 可直接更改主分区的大小即可
3.Ubuntu 18.04 编译环境配置
首先得配置 openjdk-8
sudo apt-get install openjdk-8-jdk
sudo apt-get install openjdk-8-jre
然后配置在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
4、编译Android源码
始化编译环境,命令
source build/envsetup.sh
选择编译目标
lunch aosp_arm64-eng
开始编译
make -j8
运行模拟器
emulator
5、相关错误说明
(1)_nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME)
export LC_ALL=C
(2) echo $PATH — 查看环境变量
/etc/profile 中设定的变量(全局)的可以作用于任何用户,
而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile 中的变量,他们是"父子"关系
alias python='/usr/bin/python3.6'
/usr/bin/env python 改成 /usr/bin/env python3
到这里Ubantu18.04环境下编译android源码基本介绍就算完成了。
参考文件: