我正在参加「掘金·启航计划」
前言
Android源码是庞大的,并且由于系统受限(只能在Linux系统下构建)下载Android源码的过程是漫长且煎熬的。
本文将基于Docker macOS,以全流程实操的方式来演示。window系统也同样适用
让下载安卓源码
无需虚拟机
随处可用
简单方便
前期准备
1、Docker安装
macOS
brew install --cask --appdir=/Applications docker
windows
Docker官方地址
无法访问官方网站的可以来这里下载
2、准备移动硬盘,并进行分区(推荐,可选)
众所周知Android源码十分庞大,编译后更加庞大,数据迁移是十分麻烦的。
如果你使用的是工作电脑,或者自己的电脑存储空间不足(又不肯删游戏的情况下),强烈建议使用钞能力购买一个大容量的移动硬盘。
连接移动硬盘,打开磁盘工具,在左侧区域选中移动硬盘,点击文件 新建空白映像输入磁盘名称和大小,其他默认,点击存储即可
再创建存放源码的文件夹,这里文件夹为
androidSource,绝对路径为/Volumes/aosp/androidSource。
至此,移动硬盘分区完成。其他空间依然可以正常使用。
3、创建系统为Ubuntu18.04的Docker容器
建议选择与aosp官方文档里一致的Ubuntu系统,如18.04,14.04
以下操作均以macOS系统为主,在终端上运行
docker run -it -v /Volumes/aosp/androidSource:/usr/androidSource ubuntu:18.04 /bin/bash
/Volumes/aosp/androidSource 为文件挂载目录的绝对路径,挂载是为了使拉取的源码永远存储在本地或移动硬盘上,不受容器的影响。(容器可能被删除,损坏等等)
拉取到本地的话使用本地文件夹的绝对路径即可。
以上指令会运行一个ubuntu:18.04的Docker容器,第一次运行会自动拉取系统镜像
往后使用如下
exit // 退出当前容器
docker ps -a // 查看当前所有容器
docker start [容器ID] // 运行指定ID的容器
docker attach [容器ID]// 打开指定容器终端,需先运行
至此前期准备工作已完成。
开始下载源码
AOSP官方地址
开始前需要清楚几点限制
安装工具与拉取
以下是以Ubuntu18.04为主的工具包不同系统所需要的不同,具体参考aosp搭建构建环境,
源代码标记和 build
// 无需sudo,因为容器本身就是root账号
// 安装工具包
apt-get update
apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
// 安装openjdk,master分支无需拉取,这里拉取的是android13分支
apt-get install openjdk-8-jre
// 安装python3.7, pytho2已被废弃
apt-get install python3.7
// 安装repo
apt-get install repo
// 切换python版本(重要,容器默认为python2.7会导致repo init失败)
// 查看目前含有的python版本
ls /usr/bin/python*
// 选择对应序号的python版本即可
update-alternatives --config python
python --version
// 此时会输出的python版本为python3.7
// 配置git
git config --global user.name 你的用户名
git config --global user.email 你的email
// 移动到挂载目录下
mkdir /usr/androidSource/source
cd /usr/androidSource/source
// repo 初始化,这里拉取的分支是android-13.0.0_r2,其他分支点击上面[源代码标记和 build]查看
// 我这里挂了vpn,没有vpn的使用其他镜像源
repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r2
// 开始拉取,-j 为开启线程的数量,能加快拉取速度。视电脑配置而定,失败之后重新输入即可
repo sync -j8
// 漫长的等待。。。。结束
推荐清华大学镜像源
好吧,文章写完了,代码还没拉完- -
至于系统的编译,下一期吧,随缘更新(纯实操,啥时候踩坑完,啥时候更新)。