下载AOSP源码
学习Android源码首先要下载一套AOSP源码,国内无法直接访问到AOSP网站。
AOSP源:https://source.android.com/source/downloading
可以用国内清华源或中科大源代替
清华镜像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
中科大镜像:https://lug.ustc.edu.cn/wiki/mirrors/help/aosp
开发环境要求
硬件要求
您的开发工作站应该达到或超过这些硬件要求:
Android 2.3.x(姜饼)和更高版本(包括主分支)需要64位环境。您可以在32位系统上编译旧版本。 至少100GB的可用磁盘空间用于检出代码,另外还有额外的150GB可用于构建它。如果您执行多个构建或使用ccache,则需要更多空间。 如果您在虚拟机中运行Linux,则至少需要16GB的RAM /交换空间。
软件要求
在Android开源项目(AOSP) master的分支传统开发和Ubuntu的长期支持测试(LTS)版本,但也可以使用其他发布版本。
初次建议使用ubuntu发布版本,之后可以尝试其他例如Deepin。
开始下载
准备环境
- repo
在ubuntu user 根目录执行
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage-googleapis.proxy.ustclug.org/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
复制代码
- git
$ sudo apt-get install git
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
复制代码
- 下载初始化包
https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
http://mirrors.ustc.edu.cn/aosp-monthly/ - 安装JDK
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk
复制代码
- 处理初始化包 下载的初始化包 aosp-latest.tar
在user 目录下新建 project 目录
$ mkdir project
$ cd project
复制代码
将aosp-latest.tar解压到project下,得到aosp-lastet文件夹。 (更名为aosp) 压缩
tar -xvf aosp-latest.tar //解压 tar包
复制代码
- 获得源码
*直接获得aosp源码
~/project/aosp$ repo sync
复制代码
*获取特定分支
在解压后的aosp目录下,需要修改repo分支(默认是master)
remotes/origin/android-8.1.0_r13
remotes/origin/android-p-preview-4
查看可切换的分支
~/project/aosp$ cd .repo/manifests
~/project/aosp/.repo/manifests$ git branch -av //查看可用分支
~/project/aosp$ git reset --hard remotes/origin/android-p-preview-4
//~/project/aosp$ git reset --hard remotes/origin/android-8.1.0_r13
~/project/aosp$ repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-p-preview-4
//~/project/aosp$ repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-8.1.0_r13
~/project/aosp$ repo ysnc
复制代码
android-8.0.0_r13 对应版本:Oreo 对应设备:Pixel XL、Pixel、Pixel C
特定分支 https://source.android.com/source/build-numbers#source-code-tags-and-builds
由于网络原因repo sync容易断开,建议使用以下脚本:
#!/bin/sh
echo "---------start-----------"
repo sync
while [ $? == 1 ] ;do
echo "---------gg--------------"
sleep 3
repo sync
done
复制代码
复制以上保存为 dl.sh 在代码目录执行:
~/project/aosp$ ./dl.sh
复制代码
等待结束就可以获得aosp源码
如果不需要全部代码,仅需要部分参考翻阅。
可以在repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-8.1.0_r13 之后
修改 android-O.repo\manifests\default.xml
将不需要的<project ... >注释掉,再repo sync 即可
可能遇到的问题
/usr/bin/env: ‘python’: No such file or directory
解决方案
查看可切换的分支
~/project/aosp$ cd .repo/manifests
~/project/aosp/.repo/manifests$ git branch -av //查看可用分支
~/project/aosp$ git reset --hard remotes/origin/android-p-preview-4
~/project/aosp$ repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-p-preview-4
~/project/aosp$ repo ysnc //建议使用上面的 dl.sh 脚本
复制代码