如何在Ubuntu虚拟机中下载编译Android源代码

最近想学习研究下Android源码,便一直在找资料。发现想要研究源码,首先就要对安卓进行下载和编译,断断续续的试了很久,失败了很多次,终于成功下载编译了Android源码,启动了模拟器。

下面把自己如何成功的过程分享下来,以便学习。

1、虚拟机中安装Ubuntu系统

1.1 虚拟机的选择

刚开始想安装双系统,但电脑无法成功,便使用虚拟机进行安装。开始使用的VMware安装Ubuntn系统,但是总会出现安装失败的问题,最后便改用VirtualBox。

这里使用的虚拟机就是VirtualBox。


如何在Ubuntu虚拟机中下载编译Android源代码_第1张图片
Virtual_Box版本.jpg

- VirtulaBox版本:5.1.24

1.2 Ubuntu系统的选择

第一次安装的是ubuntu-17.04-desktop-amd64,但系统安装后,发现OpenJDK7无法成功安装,到后来也没有查到怎么安装,作罢。。。
第二次安装的是ubuntu-16.04.3-desktop-amd64,但下载Android源码后,却出现了编译失败,作罢。。。

咨询做过Android底层开发的同事,了解到他使用的Ubuntu版本是14.04,果断使用这个版本,成功~

- Ubuntu系统版本ubuntu-14.04.5-desktop-amd64

下载地址:http://mirrors.ustc.edu.cn/ubuntu-releases/14.04/

系统介绍相关链接:http://www.linuxidc.com/Linux/2016-02/128506.htm

1.3 VirtualBox中安装Ubuntu系统

1、打开Virtual,选择 控制->新建


如何在Ubuntu虚拟机中下载编译Android源代码_第2张图片
新建.png

如何在Ubuntu虚拟机中下载编译Android源代码_第3张图片
设置.png

2、选择系统类型和版本,自定义名称,因为下载的Ubuntu是64位,所以选择Liunx系统和Ubuntu 64位,然后点击下一步


如何在Ubuntu虚拟机中下载编译Android源代码_第4张图片
设置虚拟机类型.png

3、选择设置的内存大小,最好内存设大点,减少虚拟机运行的卡顿,我的是8G内存,所以先设置为4G,这里在系统安装后也可调整大小


如何在Ubuntu虚拟机中下载编译Android源代码_第5张图片
设置内存大小.png

4、接下来设置虚拟机硬盘大小,直接一路点下去


如何在Ubuntu虚拟机中下载编译Android源代码_第6张图片
设置硬盘1.png
如何在Ubuntu虚拟机中下载编译Android源代码_第7张图片
设置硬盘2.png
如何在Ubuntu虚拟机中下载编译Android源代码_第8张图片
设置硬盘3.png

5、设置硬盘的大小和位置,因为Android源码下载和编译需要的空间比较大,建议设置的硬盘大小大一点。这里我设置的200G。编译结束后,硬盘就只剩下50G可用了。


如何在Ubuntu虚拟机中下载编译Android源代码_第9张图片
设置硬盘4.png

6、创建成功

如何在Ubuntu虚拟机中下载编译Android源代码_第10张图片
创建成功.png

7、之后点击右键,设置系统镜像


如何在Ubuntu虚拟机中下载编译Android源代码_第11张图片
设置系统镜像1.png
如何在Ubuntu虚拟机中下载编译Android源代码_第12张图片
设置系统镜像2.jpg

8、点击启动,安装Ubuntu系统


如何在Ubuntu虚拟机中下载编译Android源代码_第13张图片
启动系统.png

Ubuntu安装教程比较简单,网上都可以查到,这里不再细讲,可以参考下面文章:

https://jingyan.baidu.com/article/0bc808fc6326ca1bd485b9e6.html

2、Ubuntu系统的更新

系统安装完成后,需要对Ubuntu的系统进行更新,如果有翻墙工具,可以使用翻墙工具,也可以通过换源,使用国内的文件源。

这里使用图形界面进行更新源。


如何在Ubuntu虚拟机中下载编译Android源代码_第14张图片
更新源1.jpg
如何在Ubuntu虚拟机中下载编译Android源代码_第15张图片
更新源2.jpg
如何在Ubuntu虚拟机中下载编译Android源代码_第16张图片
更新源3.jpg

这里使用的是163的源


如何在Ubuntu虚拟机中下载编译Android源代码_第17张图片
更新源4.png
如何在Ubuntu虚拟机中下载编译Android源代码_第18张图片
更新源5.jpg
如何在Ubuntu虚拟机中下载编译Android源代码_第19张图片
更新源6.jpg
如何在Ubuntu虚拟机中下载编译Android源代码_第20张图片
更新源7.jpg

更新完成,源就更换成功了。

也可以使用其他的更换方式,可以参考资料:

https://jingyan.baidu.com/article/7f41ecec1b7a2e593d095ce6.html

3、源码下载

3.1设置Git配置

Ubuntu 14.04系统里默认自带git的,所以可以直接设置git的配置

git config --global user.name "Your Name"
git config --global user.email "[email protected]

3.2下载repo

repo是google使用Python写的一个脚本,方便调用git。可以用来下载、管理许多git仓库。在这里,google使用repo来负责android的版本控制。

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

这里使用的是google的网址,如果没有翻墙,就会无法下载,我们可以通过国内镜像,进行下载。

将上面的指令更改为:

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo

我们可以把这个网址设置到PATH中,方便调用。

将如下内容复制到你的~/.bashrc

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

重启终端。

可参考资料:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/

3.3初始化工作目录

在硬盘中建立下载Android源码存放的位置

mkdir Android
cd Android

3.4同步源码

可以从:https://source.android.com/source/build-numbers#source-code-tags-and-builds 查询到Android的所有版本

然后选择要下载的分支,这里下载的是6.0的版本。

//从google中下载选定的分支代码
repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r46

//如果无法翻墙,可以使用清华源进行初始化
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r46

然后执行同步命令:
repo sync
这时终端中就会开始下载代码,耗时比较久。我这里下载用了大概10多个小时时间,下载耗费了大概70G的硬盘空间。

4、编译源码

4.1安装openJDK-7

Android6.0需要JDK7,如需其他版本,还需要安装其他的JDK版本

如何在Ubuntu虚拟机中下载编译Android源代码_第21张图片
JDK版本.png

参考资料: https://source.android.com/source/requirements#older-versions

sudo apt-get install openjdk-7-jdk
//如果系统上安装有多个JDK,需配置到默认JDk版本到JDK7
sudo update-alternatives --config java
sudo update-alternatives --config javac
//设置后检查当前版本为JDk7
java -version
JDK版本检测.png

4.2安装编译的依赖项(14.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

4.3初始化编译源码

//初始化编译环境
source build/envsetup.sh
如何在Ubuntu虚拟机中下载编译Android源代码_第22张图片
初始化编译环境.png
//使用lunch命令选择编译目标:
lunch

这里选择的编译目标有自己的格式:BUILD-BUILDTYPE
比如:aosp_arm-eng的BUILD类型是aosp_arm,BUILDTYPE类型是eng

BUILD TYPE则指的是编译类型,通常有三种:
-user: 代表这是编译出的系统镜像是可以用来正式发布到市场的版本,其权限是被限制的(如,没有root权限,不开放dedug等)
-userdebug: 在user版本的基础上开放了root权限和debug权限
-eng: 代表engineer,也就是所谓的开发工程师的版本,拥有最大的权限(root等),此外还附带了许多debug工具

BUILD指的是特定功能的组合的特定名称,即表示编译出的镜像可以运行在什么环境。

其中,aosp(Android Open Source Project)代表Android开源项目;
arm表示系统是运行在arm架构的处理器上,arm64则是指64位arm架构;
处理器x86则表示x86架构的处理器;
此外,还有一些单词代表了特定的Nexus设备。

更多参考官方文档:https://source.android.com/source/running

如果没有Nexus设备,只是想在电脑上看一下模拟器运行状态,那么通常选择arm或者x86。
然后我们可以根据自己的情况,选择对应版本的数字即可

如何在Ubuntu虚拟机中下载编译Android源代码_第23张图片
选择版本.png

这里我选择了 2,即 aosp_arm64-eng

4.4 开始编译

通过make指令进行代码编译即可开始代码的编译,同时也可在其后加上-j参数来设置参与编译的线程数量,以提高编译速度。

make -j4

需要注意,参与编译的线程通常是根据自己机器的cup的核心来确定:core*2,即当前cpu的核心的2倍。
例如,给虚拟机设置的是双核cpu,则可以根据公式,最快速的编译可以设置为make -j4

之后终端便开始编译Android系统,耗时时间比较长,大概有5-6小时。

5、运行模拟器

编译完成后,即可直接通过命令运行Andorid模拟器

emulator

若在终端关闭后,想再次开启,需要再次将目录切换到Android源码存储的目录,执行下列命令:

source build/envsetup.sh

//选择刚才你编译的目标版本,这里我选择的是2
lunch

emulator

执行 source build/envsetup.sh

如何在Ubuntu虚拟机中下载编译Android源代码_第24张图片
执行source.png

选择 lunch

如何在Ubuntu虚拟机中下载编译Android源代码_第25张图片
执行lunch.png

执行 emulator

运行的速度比较慢,大概需要5分钟时间,模拟器才会完全运行起来。

如何在Ubuntu虚拟机中下载编译Android源代码_第26张图片
执行emulator.jpg

到这里,Android源码的下载,编译,运行,便已成功完成。

你可能感兴趣的:(如何在Ubuntu虚拟机中下载编译Android源代码)