目录
一、准备工作
1.安装VM虚拟机
VMware 是一个常见的虚拟机系统,可以用来安装其他操作系统。
可以参考:
VMware 11.0 简体中文版|附永久密钥:
https://blog.youkuaiyun.com/kkwant/article/details/81017144
VMware下载及安装(含破解码)永久使用:
https://blog.youkuaiyun.com/empty_ly/article/details/79992611
2.安装Ubuntu系统
官方推荐环境介绍
1. 硬件要求:
64位的操作系统只能编译2.3.x以上的版本,如果你想要编译2.3.x以下的,那么需要32位的操作系统.
磁盘空间越多越好,至少在100GB以上.如果你想要在是在虚拟机运行linux,那么至少需要16GB的RAM/swap.
2. 软件要求:
1. 操作系统要求
在AOSP开源中,主分支使用Ubuntu长期版本开发和测试的,因此也建议你使用Ubuntu进行编译,下面我们列出不同版本的Ubuntu能够编译哪些android版本:
Android版本 | 编译要求的Ubuntu最低版本 |
---|---|
Android 6.0至AOSP master | Ubuntu 14.04 |
Android 2.3.x至Android 5.x | Ubuntu 12.04 |
Android 1.5至Android 2.2.x | Ubuntu 10.04 |
2. JDK版本要求
除了操作系统版本这个问题外,我们还需要关注JDK版本问题,为了方便,同样我们也列出的不同Android版本的源码需要用到的JDK版本:
Android版本 | 编译要求的JDK版本 |
---|---|
AOSP的Android主线 | OpenJDK 8 |
Android 5.x至android 6.0 | OpenJDK 7 |
Android 2.3.x至Android 4.4.x | Oracle JDK 6 |
Android 1.5至Android 2.2.x | Oracle JDK 5 |
更具体的可以参看:Google源码编译要求:
https://source.android.com/source/requirements.html
3. 下载地址
可以访问网易开源镜像站下载不同版本Ubuntu
http://mirrors.163.com/ubuntu-releases/
我使用的是Ubuntu 14.04(2G内存+100G硬盘,编译时还需增加2Gswap)
具体安装步骤可以参考:新手安装Ubuntu 16.04 操作系统
https://blog.youkuaiyun.com/jjkkaa326/article/details/78638814
二、环境搭建
1.安装组件
Ubuntu系统安装好后,需要安装一些必要的工具(或者说组件),
Google官方构建编译环境指南中已经说明了Ubuntu14.04,Ubuntu 12.04,Ubuntu 10.04需要添加的依赖,这里就不做介绍了.
# Ubuntu14.04
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
# Ubuntu16.04
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
2.JDK
由于我需要编译的是Android4.4.4_r1版本,所以安装的是jdk1.6(jdk-6u45-linux-x64.bin),
如果是安装1.7及以上版本可以在线安装:
sudo apt-get update
sudo apt-get install openjdk-7-jdk jdk1.7
sudo apt-get install openjdk-8-jdk jdk1.8
如安装多个版本jdk,可任意切换,选择对应的jdk版本
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
3.安装repo
repo 是安卓环境下的命令行工具,对Git部分命令进行封装,将 百多个git库进行更新。 具体安装步骤如下:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
说明:
a. PATH=~/bin:$PATH,代表配置环境变量
b. curl也可以换成curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
或curl https://aosp.tuna.tsinghua.edu.cn/git-repo-downloads/repo > ~/bin/repo (清华源—推荐)
c. 如遇到无法下载repo,可直接通过curl后面链接直接下载,然后拷贝到/bin/目录中,然后修改权限chmod
d. 如果都不能下载,可直接通过git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo,下载git-repo目录,然后 将git-repo中的repo文件复制到 /bin目录中,并修改权限
三、源码下载
1.创建一个存放安卓源码的空目录
mkdir andoird //创建源码下载目录
cd android //进入目录
2.进入andoird 目录,运行 repo init 来同步相应版本的源码:
repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.4_r1
由于google站无法访问,所以我选择了清华的下载源,用下面的命令下载
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.4.4_r1 //下载指定版本
下载最新版本可以使用
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
或:
repo init -u git://aosp.tuna.tsinghua.edu.cn/aosp/platform/manifest
两者实现的效果一致,仅仅只是协议不同.
如果执行该命令的过程中,提示无法连接到 gerrit.googlesource.com,那么我们只需要编辑 ~/bin/repo文件,找到REPO_URL这一行,然后将其内容修改为:
REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
或
REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'
(注:有评论说清华的镜像网站已经改成了这个:REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/',具体未亲测)
然后重新执行上述命令即可.
补充说明
1.不带参数的manifest命令用于获取master上最新的代码,但是可以通过-b参数指定获取某个特定的android版本,比如我们想要获取android-4.0.1_r1分支,那么命令如下:
//中科大源
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-8.1.0_r9
或
//清华源
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.0.1_r1
3.配置你的用户邮箱
repo init 后,会提示你输入名字和邮箱, 两个我都是直接按的回车键,这时它默认将系统用户名和主机名 作为用户名和邮箱,接着我直接按了y,提示repo初始完。
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
4.然后同步源码树
repo sync //真正下载
下载完成后,checkout出的代码有9.4G
进入隐藏的 .repo目录,查看当前分支大小,有64G
如果想check out 其它分支代码,将工作目录下check out出的代码删除,保留隐藏的.repo 目录,重新初始化分支执行上述流程就行,会快很多。
(提示:一定要确定代码完全同步了,不然在下面编译过程出现的错误会很痛苦,不确定是否下载完全,可以多用repo sync同步几次)
四、直接下载源码编译
由于是公司电脑,配置及各种限制,下载了一次失败后,就没有再试上面的在线下载,我是直接通过百度网盘下载源码后解压缩编译的,这里也简单说下直接下载安卓源码并解压。
源码下载后的文件是.7z格式的压缩包,需要拷贝到Ubuntu系统下进行解压,如果未安装工具,需要先安装p7zip或p7zip-full,安装及解压命令如下:
sudo apt-get install p7zip //安装p7zip或p7zip-full(如已安装可省略)
7z x manager.7z -r -o /home/xx //解压文件
x 代表解压缩文件,并且是按原始目录解压(还有个参数 e 也是解压缩文件,但其会将所有文件都解压到根下,而不是自己原有的文件夹下)manager.7z 是压缩文件,这里大家要换成自己的。如果不在当前目录下要带上完整的目录;
-r 表示递归所有的子文件夹;
-o 是指定解压到的目录,这里大家要注意-o后是没有空格的直接接目录。
附源码网盘下载地址:
Android源码
https://pan.baidu.com/s/1ngsZs#list/path=%2FAndroid%E6%BA%90%E7%A0%81
Android源码下载(包括最新8.0版本)
https://blog.youkuaiyun.com/hty1053240123/article/details/78333007