![深入理解Android 5 源代码](https://wfqqreader-1252317822.image.myqcloud.com/cover/661/22690661/b_22690661.jpg)
2.1 获取Android源代码
要想研究Android系统的源代码,需要先获取源代码。目前市面中的主流操作系统是Windows、Linux和Mac OS。因为Mac OS属于类Linux系统,所以本书将讲解在Windows系统和Linux系统中获取Android源代码的知识。
2.1.1 在Linux系统中获取Android源代码
北京时间2014年11月5日,Google在https://android.googlesource.com/上正式公布了Android 5.0的源代码,如图2-1所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0018_0001.jpg?sign=1739283341-LnH1obWXZ000YM8Xh6WYlQXPqfOYh7bj-0-dc37321ee12c25ac463a095f25b16081)
图2-1 Android 5.0的源代码分支
在Linux系统中,通常使用Ubuntu来下载和编译Android源代码。由于Android的源代码内容很多,Google采用了Git的版本控制工具,并对不同的模块设置不同的Git服务器,我们可以用repo自动化脚本来下载Android源代码。在Android官方站点 source.android.com/source/building.html中,提供了获取并编译Android源代码的具体过程,如图2-2所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0018_0002.jpg?sign=1739283341-zzgbCxJDYL9t6PitZ8EjmUWXkVaPukFP-0-c9e386304596e1748312e64ae2426ba3)
图2-2 Android官方提供的获取并编译源代码教程
在接下来的内容中,将详细讲解获取Android源代码的过程。
(1)下载repo
在用户目录下,创建bin文件夹,用于存放repo,并把该路径设置到环境变量中去,命令如下:
$ mkdir ~/bin $ PATH=~/bin:$PATH
下载repo的脚本,用于执行repo,命令如下:
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
设置可执行权限,命令如下:
$ chmod a+x ~/bin/repo
(2)初始化一个repo的客户端
在用户目录下,创建一个空目录,用于存放Android源代码,命令如下:
$ mkdir AndroidCode $ cd AndroidCode
进入到AndroidCode目录,并运行repo下载源代码,下载主线分支的代码,主线分支包括最新修改的bug,以及并未正式发布的版本的最新源代码,命令如下:
$ repo init -u https://android.googlesource.com/platform/manifest
下载其他分支正式发布的版本,可以通过添加-b参数来下载,命令如下:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.0_0_r1
例如可以使用如下命令来初始化最新的Android源代码:
./repo init -u https://android.googlesource.com/platform/manifest -b android-5.0_0_r1
在下载过程中会需要填写Name和E-mail,填写完毕之后,选择Y进行确认,最后提示repo初始化完成,这时可以开始同步Android源代码了,同步过程很漫长,需要耐心等待,执行下面命令开始同步代码:
$ repo sync
经过上述步骤后,便开始下载并同步Android源代码了,笔者的界面效果如图2-3所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0019_0001.jpg?sign=1739283341-r9Nj04RtFbp50YNSYS75FXQVHcai1pHp-0-58d2463ba7341e06a95610b95ae46a3f)
图2-3 正在下载源代码
因为网络方面的原因,可能执行“./repo init-u https://android.googlesource.com/platform/manifest-b android-5.0_0_r1”初始化命令会失败,提示一些类似网络连接失败的信息,此时不用理会,只需继续执行这个命令。如果出现多次失败提示,则可以尝试使用如下方法来解决。
(1)使用如下命令删除Android 5.0文件中的缓存文件,然后重新执行初始化命令:
rm -rf * -R
(2)晚上、凌晨时下载,一般这个时候的网络环境容易下载Android源代码。
注意
(1)在源代码下载过程中,在源代码下载目录看不到任何文件,打开“显示/隐藏”,会看到一个名为“.repo”的文件夹,这个文件夹是用来保存Android源代码的“临时文件”。
(2)当文件最后下载接近完成时,会从“.repo”文件夹中导出Android源代码。
(3)当Android 5.0源代码下载完成后,可以看到Android源代码下载目录中会有bionic、bootable、build、cts、dalvik等文件夹目录,这些就是Android的源代码。
(4)如果不得不关闭电脑停止下载,那么可以在源代码下载的终端中按下Ctrl +C组合键或者Ctrl + Z组合键停止源代码的下载,这样不会造成源代码的丢失或损坏。
2.1.2 在Windows平台获取Android源代码
在Windows平台上获取Android源代码的方式和在Linux中获取原理相同,但是需要预先在Windows平台上面搭建一个Linux环境,此处需要用到cygwin工具。cygwin的作用是构建一套在Windows上的Linux模拟环境,下载cygwin工具的地址如下:
http://cygwin.com/install.html
下载成功后会得到一个名为“setup.exe”可执行文件,通过此文件可以更新和下载最新的工具版本,具体流程如下所示。
(1)启动cygwin,如图2-4所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0020_0001.jpg?sign=1739283341-AhUGDkAkqCDDScCpPBh4T8OwK3FXPC5T-0-d71820aecd10f377f52d3895744eeae4)
图2-4 启动cygwin
(2)单击“下一步”按钮,选择第一个选项:从网络下载安装,如图2-5所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0020_0002.jpg?sign=1739283341-0rItISzflbtgY3vBIDbhv6Bu8pH7ceyG-0-2864eb306f0793e586835c0b92fe9f7f)
图2-5 选择从网络下载安装
(3)单击“下一步”按钮,选择安装根目录,如图2-6所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0020_0003.jpg?sign=1739283341-dEaBeuy2xiTW8sEWdo01Qih635j8GfAP-0-d1cdc9775df26a38d960e279eaf7c686)
图2-6 选择安装根目录
(4)单击“下一步”按钮,设置网络代理。如果所在网络需要代理,则在这一步进行设置,如果不用代理,则选择直接下载,如图2-7所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0020_0004.jpg?sign=1739283341-nqQzfaM32LljyxNqjOa7FK4zsAJC482e-0-f9aff44c3be1d077b07917bebfab5e52)
图2-7 设置网络代理
(5)单击“下一步”按钮,选择下载站点。一般选择离我们比较近的站点,速度会比较快,如图2-8所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0020_0005.jpg?sign=1739283341-tMMbK1ATHDooAY57rZO0gAyk35qM9Pp4-0-c26379457681a3dd299bd83614c009bf)
图2-8 选择下载站点
(6)单击“下一步”按钮,开始更新工具列表,如图2-9所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0020_0006.jpg?sign=1739283341-L87swkB0foAkxiW6QxIrocxwRDhp3R8W-0-c2bb7d67cc4360ec529613ac079019a7)
图2-9 更新工具列表
(7)单击“下一步”按钮,选择需要下载的工具包。在此需要依次下载curl、git、python这些工具,如图2-10所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0021_0001.jpg?sign=1739283341-zBedXxzoRMEGKswl01kerfYzb9FiuvZn-0-3c7d8533e1cd3fb0c6d0ac1f5be9f2d3)
图2-10 依次下载工具
为了确保能够安装上述工具,一定要用鼠标双击图2-10中的那些项使其变为Install形式,如图2-11所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0021_0002.jpg?sign=1739283341-z2RjCpRyFWjJlfybrWm2US1e4IbBKwE6-0-b507dd85fc66694da2a2a64f5132f954)
图2-11 务必设置为Install形式
(8)单击“下一步”按钮,经过漫长的等待过程,如图2-12所示。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0021_0004.jpg?sign=1739283341-iq3v7V7XDNGABYWitE5sisToZfkzUGOY-0-f3eae8fc6dd4f7688cb61eaf2b349d6b)
图2-12 下载进度条
如果下载安装成功会出现提示信息,单击“完成”按钮即完成安装。当安装好cygwin后,打开cygwin,会模拟出一个Linux的工作环境,然后按照Linux平台的源代码下载方法就可以下载Android源代码了。
建议读者在下载Android源代码时,严格按照官方提供的步骤进行,地址是:http://source.android.com/source/downloading.html,这一点对初学者来说尤为重要。另外,整个下载过程比较漫长,需要大家耐心等待。图2-13是下载Android源代码时的截图。
![](https://epubservercos.yuewen.com/49F9A9/11261866703048706/epubprivate/OEBPS/Images/figure_0021_0003.jpg?sign=1739283341-v8B1ovh1tc6yZJyVfCnQu285l1syZUB4-0-358ad1eb775117f7918b1157ad1e0ba2)
图2-13 在Windows中用cygwin工具下载Android源代码