学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

时间:2022-05-23 10:11:27

引言:为什么要打造自己的Android源码学习环境

有一个可以编译的Android源码环境,可以在任何自己想了解的源码中加上log信息,验证自己的理解是否准确,有助于理解Android的运行细节。做Android开发,了解Android的运行机制和原理是很有帮助的,尤其是想对Android framework进行深度定制。如果你没有自己的Android源码编译环境,又想对Android源码有更深的理解,那么本系列文章适合你。

本系列文章是基于Windows + virtual box虚拟机,所以如果你用的host OS本身就是Linux,可以忽略virtual box虚拟机相关的内容。

本文章侧重于实用性,尽量将涉及到的每一步都写出来,读者按照步骤一步步操作即可。

1.在Virtual box虚拟机中装Ubuntu(本节主要针对Windows系统的读者,如果你用的已经是Linux系统,可以跳过此篇。)

 1.1 安装虚拟机Virtual Box

         VirtualBox的下载地址:https://www.virtualbox.org/wiki/Downloads

         Windows版本的下载地址:http://download.virtualbox.org/virtualbox/5.1.14/VirtualBox-5.1.14-112924-Win.exe

         目前最新的是5.1.14版本。

1.2 下载Ubuntu镜像

      可以从以下地址下载ubuntu系统镜像文件:

      * (1)Ubuntu中文官网:http://cn.ubuntu.com/download/
     * (2) Ubuntu官网:https://www.ubuntu.com/download/desktop 
     * (3) 网易的镜像:http://mirrors.163.com/ubuntu-releases/ 

【注】最新的Ubuntu版本是16.10,代号Yakkety Yak,即2016年10月份的版本。而我这次下载的Android源码是5.1版本。因为特定的Android版本在开发的时候都和当时的Ubuntu版本相关联,Android5.1对应的Ubuntu版本是Ubuntu14,所以我下载的是Ubuntu14.04,代号Trusty Tahr。(如需下载其他Android版本,需自行查阅对应的Ubuntu版本,如版本不对应,后期编译可能会出很多问题 )

关于Ubuntu版本的说明,可以参考:https://wiki.ubuntu.com/Releases  Ubuntu的版本采用x.y.z的格式,通常情况下,如果只有x.y,则表示x年y月发布的,例如14.04表示2014年4月发布。如果是x.y.z的形式,则表示是x.y的演进版本,例如14.04.1是2014年7月份发布的,14.04.5是2016年8月发布的。

1.3 在虚拟机中安装Ubuntu系统

  Step 1: 新建虚拟电脑,打开“Oracle VM VirtualBox",“新建”,显示界面如下:

  “名称”:自定义的名字,与其他虚拟系统区分开即可,例如命名为ubuntu14_200GB。 
  “类型”:Linux 
  “版本”:选“Ubuntu (64-bit)” 
  “内存大小:当前系统内存的30%~40%作为虚拟系统的内存,例如16GB内存,留给虚拟系统6GB内存。

   (关于内存大小的说明:我第一次编译Android源码时,电脑是4g内存,给系统分配了不到2g内存,事实发现,编译到中途都会卡主导致编译失        败。所以如果你的电脑内存不够大,建议你加内存条,一般编译Android5源码,需要保证虚拟机有4g的内存)

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

点击“创建”,进入下一步。

Step 2: 选择虚拟硬盘大小为200GB或者更大

  “文件位置”:选择将虚拟系统放在哪个硬盘分区中,那个分区要满足虚拟系统对硬盘大小的要求。 
  “文件大小”:设置为200GB或者更大。 
  “存储在物理硬盘上”:选择“动态分配”

     从实际情况来看,安装一些必备软件、下载Android7.1.1r13的代码、编译之后,虚拟硬盘大小接近150GB了,所以预留充足的空间是必要的。其       实设置的大一些也无妨,因为是“动态分配”,虚拟系统不是一下子就占用很大的硬盘空间。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

点击“创建”,在Virtual Box中就创建了一个新的虚拟电脑(图中选中的那个),如下:

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

Step 3:设置虚拟电脑

  为了方便主机系统和虚拟系统之间互操作,将“共享粘贴板”和“拖放”都设置为“双向”:

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

如果之前内存大小设置的不合适,这时还可以设置内存大小:

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

 设置CPU: 
  处理器数量要小于实际的CPU数量。 
  运行峰值:100%。如果考虑运行虚拟系统时,主机系统也要正常工作,可以调低此值。为了编译Android源码,我选择了100%。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

 选择刚下载的ubuntu镜像文件(iso文件): 
 在启动虚拟电脑时会安装ubuntu系统。如果此时不选择镜像文件,在启动虚拟电脑时也会提示选择。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

设置共享文件夹: 
“共享文件夹路径”:存放共享文件的地方。 
“共享文件夹名称”:此名称最好为英文,因为此文件夹名称还要在之后进行mount。 
  如果双向共享,不要勾选“只读分配”。为了打开系统后就能使用共享文件夹,勾选“自动挂载”。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

其他设置使用默认选项即可。

Step 4:启动刚才创建的虚拟电脑

      选中刚创建的“ubuntu14_200GB”,点击”启动“。

      如果之前没有选择ubuntu镜像(iso文件),此时会弹出选择界面(如下),否则将会进入安装ubuntu系统的界面。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

 选择ubuntu-16.04-desktop-amd64.iso之后,点击“启动”,进入安装ubuntu系统的界面。

1.4 安装Ubuntu系统

     0.1 启动虚拟电脑后,默认是English,可以选择“中文(简体)”。然后,点击“安装 Ubuntu”。

      默认是English,可以选择“中文(简体)”。然后,点击“安装 Ubuntu”。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

0.2 准备安装Ubuntu

都不选,然后点击“继续”

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

0.3 安装类型

选择“清除整个磁盘并安装Ubuntu”,这里的清除是指清除虚拟电脑的磁盘,不会影响到主机系统。 然后点击“现在安装”。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

0.4 将改动写入磁盘?

点击“继续”

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

0.5 选择时区

选择一个GMT+8的即可。 然后点击“继续”

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

0.6 键盘布局

然后点击“继续”

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

0.7 您是谁?

输入个人信息。当然姓名可以任意。然后点击“继续”。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

0.8 开始安装Ubuntu了

需要等待几分钟时间,就安装好了。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

0.9 安装完成

点击“现在重启”,重启虚拟电脑。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

等待一两分钟时间,就会进入登录界面了。根据屏幕上的提示,可能需要敲下回车键。

需要注意的是,有时会卡在VirtualBox黑屏的界面,可以通过“控制”->“重启”,再尝试重启一次。

0.10 登录界面

到此,安装Ubuntu已经完成。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

接下来,登陆虚拟系统。还需要做一些配置,以让虚拟系统与主机系统更好地协作。

1. 安装VirtualBox附加组件

VirtualBox附加组件为虚拟系统提供更多方便易用的功能,例如共享文件夹、鼠标集成、窗口大小控制等。

VirtualBox界面 -> 设备 -> 分配光驱 -> 选择虚拟盘 -> 选择 VirtualBox目录下的VBoxGuestAdditions.iso,点击“打开”。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

更多关于Guest Addition的说明,请参考官网:Chapter 4. Guest Additions 
摘一些内容,如下:

the Guest Additions are designed to be installed inside a virtual machine after the guest operating system has been installed. They consist of device drivers and system applications that optimize the guest operating system for better performance and usability. 

The Guest Additions offer the following features:
(1) Mouse pointer integration
(2) Shared folders
(3) Better video support
(4) Seamless windows
(5) Generic host/guest communication channels
(6) Time synchronization
(7) Shared clipboard
(8) Automated logons (credentials passing)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

确认安装VirtualBox附加组件,点击“运行”。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

安装Guest Additions的log:

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

重启虚拟系统就可以了,不用重启主机系统。 
注:重启的时间可能会持续几分钟。如果卡住了,可以手动再重启一次。

2. 设置共享目录

执行命令:

mkdir shared
sudo mount -t vboxsf share shared
  • 1
  • 2
  • 1
  • 2

shared目录是共享目录,如果“访问权限”是“完全”(如下图),则shared目录可读可写,否则,shared目录只能读,不能写。

share是之前设置的共享文件夹的名字。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

3. 调整界面的大小

这一步可能不是必须的。因为安装完VirtualBox附加组件后,重启虚拟电脑,界面会变大到跟屏幕一样宽。

点击VirtualBox中的“视图”,点击“自动调整显示尺寸”,然后放大VirtualBox界面,此时登陆界面变大,与屏幕等宽了。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

4. 设置软件源

设置(那个齿轮图标)-> 软件和更新 -> “下载自” 点开下拉菜单,选择“其他站点…”

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

选择 “中国”,点击“选择最佳服务器” 
学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

每次测试的结果可能不太一样,我的测试结果如下:

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

点击“选择服务器”,输入密码。

关闭“软件和更新”界面时,弹出“可用软件的信息列表已过时”,点击“重新载入”。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

我有时点重新载入会遇到报错,提示“下载软件仓库信息失败,检查您的网络连接”。这时候换软件源就好了,163的、lupaworld或aliyun都还好。

5. 调整Terminal界面字体

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

选择“自定义字体”,更改字体大小。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

6. 设置VIM

安装VIM: sudo apt-get install vim

如果~目录下没有.vimrc,则新建.vimrc。

在.vimrc中输入:

set nu
set hlsearch
set autoindent
set cindent
set smartindent

set showmatch
set incsearch
set cscopetag
set shiftwidth=4
set tabstop=4
set expandtab
set backspace=indent,eol,start
syntax enable
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

7. 安装atom

atom链接: https://github.com/atom/atom/releases/latest

下载atom:https://github.com/atom/atom/releases/download/v1.13.1/atom-amd64.deb

安装:sudo dpkg -i atom-amd64.deb(此步骤可能有问题,可略过)

8. linux下截图

截取当前活动窗口:alt + prt sc 
截取全屏: ctrl + prt sc 
截取部分屏幕: shift + prt sc

9. 切换到root(此步骤可略过)

执行su失败:

$ su
密码:
su:认证失败
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

解决方法:

galian@galian-VirtualBox:~$ sudo passwd
[sudo] galian 的密码:
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
galian@galian-VirtualBox:~$ su
密码:
root@galian-VirtualBox:/home/galian#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

10. 如果鼠标不能移出虚拟系统的窗口

试试按下右边的Ctrl键,或者打开“鼠标集成”功能,如图。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)

11. 如果重启停留在VirtualBox黑屏界面

手动再重启一次:在VirtualBox中,“控制”菜单,点击“重启”

12. 中文输入

“系统设置”(齿轮图标) -> “文本输入”

如果没有“拼音(Fcitx)”,点击左下角的加号,添加“拼音(Fcitx)”。 
通过Ctrl+空格,可以切换输入法。

学习搭建Android源码学习环境一(在虚拟机中安装Ubuntu)