android源码从下载到编译

过年的时候把自己的旧的联想y480扔给我爸去使用了,最主要是带两个电脑有点重,而且使用windows时,我就不能控制住我自己,一直LOL。但是适当的游戏还是可以的,于是把自己的新的MSI装了个双系统,装双系统的时候还是有点曲折的。额,扯远了,因为一直要在Ubuntu上编译Android源码,每次都要去安卓源码去下载源码,并且按照教程进行编译。不爽,因此今天在这里记录一下操作,方便自己以后如果又重装系统时编译Android

源码下载

讲道理Android源码下载有两种方式:

  1. 从官网下载官网(需要)
  2. 从国内镜像源下载镜像源(谢谢清华大学开源软件镜像站的提供)

官网下载

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
repo init -u https://android.googlesource.com/platform/manifest

这样就能开始下载最新的Android源码清单了,如果要下载指定版本的Android源码,可以进行如下操作:

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

具体的版本不仅和Android系统有关还和google亲儿子系列的型号有关:

上图给出了部分Android源码版本。当清单文件下载完成后,使用:

repo sync

就可以同步Android源码了。这时候需要VPN一直挂着,还不一定成功。

镜像源下载

之前还不知道有镜像源这种东西,这个名词还是在尝试使用openSUSE的时候,因为不使用镜像源,openSUSE上的软件都基本无法下载下来。于是就脑洞大开,Android源码会不会也有镜像源了,google了一把,让我找到了。

如何使用该镜像源,官网上说得很清楚了,但是为了防止还要跳转,我在这里也记录下来:

之前的步骤和从官网下载的过程是一致的:

下载repo工具

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

这个可以不要。

下载压缩包

接下来就可以不同了,镜像站为我们打好了源码的tar压缩包,只要下载完该压缩包,然后进入解压后的文件,使用repo sync就可以了:

wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd AOSP   # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码

传统做法

我们也可以按照官网的方式下载:

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.0.1_r1
repo sync

但是个人推荐使用压缩包的方式,下载的压缩包大概20G左右。

编译

在编译前需要先把环境配置好,我使用的是Ubuntu 16.04Ubuntu 14.04的操作是一致的。

首先Git我们需要安装吧?

sudo apt install git

在官网上说Android源码需要使用openjdk编译,因此安装openjdk

sudo apt update
sudo apt install openjdk-8-jdk

接下来需要安装各种编译环境了(没有看到Ubuntu16.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

在这里我们就使用Ubuntu14.04的环境(关于 apt-get 和apt 实际上是一致的,在Ubuntu16.04 上推荐使用apt,但是apt-get还是能用的)

然后就是进入我们刚才同步完成的aosp

source build/envsetup.sh
lunch full-eng
make -j8

接下来的时间可以去睡一觉了,我的MSI笔记本编译了近两个小时。

你可能感兴趣的:(Android)