《深入理解Android:卷III A》一一1.1获取Android源代码

简介:

本节书摘来华章计算机出版社《深入理解Android:卷III A》一书中的第1章,第1.1节,作者:张大伟 更多章节内容可以访问云栖社区“华章计算机”公众号查看。1

1.1获取Android源代码

在深入研究Android之前,首先必须获得一套Android的源代码。Google提供官方Android源代码的获取方法如下:
https://source.android.com/source/downloading.html
这个页面介绍了使用repo脚本进行Android源码的下载的两个基本步骤。
1)首先通过repo init命令将当前文件夹初始化为repo脚本的工作区。其命令格式如下:
repo init -u -b <分支名称>
repo init命令会在当前文件夹下创建一个.repo文件夹,并从-u参数所指定的repository中下载一个manifest.xml文件到这个.repo文件夹。这个manifest.xml文件定义了Android源代码中所有git项目的清单,如下所示:
[manifest.xml]

......

                             path="packages/apps/Music" revision="..."/>

......


其中每一个project项都描述了一个git项目,而每一个git项目中则包含了负责某项功能的源代码。其中,name属性指定了git项目的名称,path属性指定了git项目将被下载到哪一个文件夹,而revision则指定了需要下载git项目的哪一个分支。上述manifest.xml片段中所给出的两个git项目分别存储了Android基本框架的代码以及Music应用程序的代码,它们将被分别下载到frameworks/base以及packages/apps/Music文件夹。
2)在完成repo工作区的初始化之后,便可以通过repo sync命令下载代码了。repo sync命令的原理就是解析.repo/manifest.xml中的内容,然后通过git工具逐个下载清单中所列举的git项目。repo sync可以接受-j参数进行多线程的代码下载以提高下载速度,例如repo sync -j8表示将使用8个线程。
由于整套Android源代码由数百个这样的git项目组成,因此进行Android源代码的完整下载是非常耗时的。倘若开发者只关心其中的某个部分,例如上述manifest.xml片段中所给出的Music应用程序的代码,那么可以这么做:
repo sync platform/packages/apps/Music
也就是说,在repo sync后面添加git项目的名称作为参数则可以单独下载这个项目的代码。在迫切地需要对Android的某个局部模块进行研究时,这个命令十分有用。
其实manifest.xml也隶属于一个git项目, 而这个git项目的名称与下载地址正是通过-u参数所指定的repository。所以通过在repo init中的-b参数指定的不同的分支可以获得不同内容的manifest.xml,进而repo sync得以下载不同的Android源代码。
遗憾的是,Google官方所给出的repository所在的服务器在国内访问十分困难。除了使用官方提供的repository之外,一些芯片厂商提供的镜像repository可以用于源代码下载。通过官方服务器下载源代码遇到问题的读者可以在codeaurora.org以及omapzoom.org上找到用于下载Android源代码的镜像repository的地址。
倘若不需要进行代码编译及调试,那么在线阅读Android源代码无疑是一个非常方便的选择。基于OpenGrok代码搜索引擎的androidxref.com就是一个在线阅读Android源代码的站点。这个站点存储了自Android 1.6以来所有版本的Android源代码,并且在OpenGrok引擎的支持下可以非常快速地实现源代码的查找与跳转。如图1-1和图1-2所示。

image

相关文章
|
3天前
|
Android开发
Android源代码定制:Overlay目录定制|调试Overlay资源是否生效
Android源代码定制:Overlay目录定制|调试Overlay资源是否生效
11 0
|
3天前
|
Android开发
Android源代码定制:添加customize.mk文件进行分项目和分客户的定制
Android源代码定制:添加customize.mk文件进行分项目和分客户的定制
2 0
|
3月前
|
SQL 定位技术 Android开发
分享119个Android手机应用源代码总有一个是你想要的
分享119个Android手机应用源代码总有一个是你想要的
88 2
|
3月前
|
Android开发
分享88个Android控件源代码总有一个是你想要的
分享88个Android控件源代码总有一个是你想要的
23 0
|
3月前
|
Android开发
分享89个Android控件源代码总有一个是你想要的
分享89个Android控件源代码总有一个是你想要的
73 0
|
11月前
|
XML Java Android开发
Android优化版ListView(附源代码)
本文是博主对Adapter(适配器)的一些理解,为了加深对Adapter的理解以及记录自己的阶段学习而写,同时也适合初学者阅读,参考本条博客的逻辑进行学习。
117 0
|
固态存储 Java 开发工具
Ubuntu18.04 编译 Android10.0 系统源代码
Ubuntu18.04 编译 Android10.0 系统源代码
249 0
|
Linux 程序员 开发工具
Android核心服务解析篇(一)——下载Android源代码
Android核心服务解析篇(一)——下载Android源代码
182 0
Android核心服务解析篇(一)——下载Android源代码
|
Java API Maven
【Android 高性能音频】hello-oboe 示例解析 ( Oboe 源代码依赖 | CMakeList.txt 构建脚本分析 | Oboe 源代码构建脚本分析 )
【Android 高性能音频】hello-oboe 示例解析 ( Oboe 源代码依赖 | CMakeList.txt 构建脚本分析 | Oboe 源代码构建脚本分析 )
205 1
【Android 高性能音频】hello-oboe 示例解析 ( Oboe 源代码依赖 | CMakeList.txt 构建脚本分析 | Oboe 源代码构建脚本分析 )
|
Android开发 流计算 容器
Android 12 正式发布:源代码已推送至AOSP开源项目,Pixel 用户几周后才能更新
Android 12 正式发布:源代码已推送至AOSP开源项目,Pixel 用户几周后才能更新
Android 12 正式发布:源代码已推送至AOSP开源项目,Pixel 用户几周后才能更新