Android源码下载及编译
首先关于环境要Ubuntu系统,而且尽量版本比较新,我的版本是18.04,而且至少要200G的磁盘空间,在书写本文时,整个源码下载并编译后占用的空间大小如下
下载源码
国内环境推荐使用清华源镜像下载,具体步骤如下:
下载并解压初始化包
wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
tar xf aosp-latest.tar
虽然是通过清华源服务器下载,但是这个初始化包非常大,在写本文的时候这个包大概有50G大小,中间还会因为网络问题而失败,不过没有关系会断点续传。另外需要注意这是单个50G的文件,确认你的文件系统支持单个这么大的文件。
注意初始化包有50G,解压完还要50G,所以要确保你的磁盘空间足够大
下载repo工具
这里还是使用清华源的镜像
mkdir repo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
下载完后将repo目录添加到你的PATH中,以便于在任意目录执行该工具。接着换源,在.bashrc文件中添加下面一行
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
记着重启终端或者执行该文件以生效
同步源码
刚才解压完aosp-latest.tar之后aosp目录是空的,只要一个隐藏的.repo目录,我们需要在aosp目录下执行下面命令
repo sync
这个过程也会很久,耐心等待
编译源码
上一步是下载源码,如果你只需要查看学习源码那么就已经可以了。如果你还想尝试修改编译源码,就需要接下来步骤
安装JDK
需要openjdk8版本及以上,安装如下
sudo apt-get update
sudo apt-get install openjdk-8-jdk
安装其他程序包
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
减一直接复制过去执行,已安装过的会自动忽略
编译
- 首先进入aosp目录
cd aosp
- 设置环境
source build/envsetup.sh
- 选择编译目标
lunch aosp_arm-eng
。注意直接运行lunch
可以显示所有可编译的目标 - 开始编译
make -j8
-j8是执行编译线程数,根据自己cpu核数合理选择。这个过程非常漫长,我在一个40核的服务器上,指定了20个线程编译了快4个小时 - 启动模拟器
emulator
。注意如果重启终端的话还要执行2、3步之后才能启动模拟器
编译单个模块
在初始化环境(执行编译的2、3步骤)后,使用mmm命令,如编译Music
mmm packages/apps/Music
使用hmm
或者查看build/envsetup.sh文件可以查阅更多相关命令说明
更多信息
更多其他信息请参考:Android源码官网
题图来自unsplash:https://unsplash.com/photos/Dd_7xDCuuUo