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

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所示。

时间: 2025-01-01 17:52:30

《深入理解Android:卷III A》一一1.1获取Android源代码的相关文章

《深入理解Android:卷III A》一一1.5本章小结

1.5本章小结 本章介绍了获取Android源代码.使用IDE进行源代码的阅读以及调试的方法.接下来让我们开始Android源代码的研究之旅吧.

《Android的设计与实现:卷I》——第1章 Android体系结构及源代码阅读环境搭建 1.1 Android发展过程

第1章 Android体系结构及源代码阅读环境搭建 Android是Google于2007年11月5日发布的基于Linux内核的开源移动设备软件平台,该平台由操作系统.虚拟机.运行库.框架.应用软件以及开发工具组成. 1.1 Android发展过程 Android自 Android 1.5开始,以甜点作为平台版本代号,并且各代号首字母以C D E F G H I J顺序排列.Android自发布以来,经过数个版本的更新和完善,已成为最大的智能手机平台之一.Android的发展过程如表 截至201

《OpenGL ES应用开发实践指南:Android卷》—— 1.3 初始化OpenGL

1.3 初始化OpenGL 下一步就是使用一个特殊的类GLSurfaceView初始化OpenGL.GLSurfaceView会处理OpenGL初始化过程中比较基本的操作,如配置显示设备(display)以及在后台线程中渲染:渲染是在显示设备中一个称为"surface"的特定区域完成的,有时也称为视口(viewport).GLSurfaceView类也使得处理标准Android Activity生命周期变得容易了:在Android里,任何Activity都可以创建(create)和销毁

《OpenGL ES应用开发实践指南:Android卷》—— 2.2 不要从头开始

2.2 不要从头开始 我们可以重用第1章的项目作为起点.1.在Eclipse里,选择"FirstOpenGLProject",要确保项目是打开的,然后按"Ctrl+C"快捷键:再按"Ctrl+V"快捷键复制这个项目.2.出现提示框时,输入"AirHockey1"作为项目名,你可以自己选择项目目录.3.打开新项目,展开"src"文件夹,找到我们在第1章中定义的两个类文件:FirstOpenGLProjectA

Android群英传笔记——第七章:Android动画机制和使用技巧

Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最 近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中十分重要的一部分,从早期的Android版本中,由于动画机制和绘图机制的不健全,Android的人机交互备受诟病,Android从4.X开始,特别是5.X,动画越来越完善了,Google也开始重视这一方面了,我们本章学习的主要内容有 Android视图动画' Android属性动画 Android动

Android群英传笔记——第六章:Android绘图机制与处理技巧

Android群英传笔记--第六章:Android绘图机制与处理技巧 一直在情调,时间都是可以自己调节的,不然世界上哪有这么多牛X的人 今天就开始读第六章了,算日子也刚好一个月了,一个月就读一半,这效率也确实有点低了,自己还要加把劲,争取四月底全部看完,第六章讲的是Android的绘图机制,应该算是比较核心的东西了,不管什么功能,最终都是以图形的方式呈现给用户的,因此,掌握Android的绘图技巧,可以在让你设计应用的时候更加的随心所欲,对Android的理解更高 基本的绘图方法,相信读者都已经

Android零基础入门第1节:Android的前世今生

原文:Android零基础入门第1节:Android的前世今生 现在网上有很多各色Android资料了,但相对来说还是比较零散,Android覆盖的范围极广,最近刚好有机会全部拉通整理一遍,也保存起来方便后期学习. 这一系列资料从最初的Android认识到Android高级开发,会免费共享出来分享给大家,包括中间会涉及到的一些源码.今天这是开篇,赶紧上车一起来聊一聊Android的前世今生.   一.IT行业发展几个阶段   IT行业是个年轻的行业,共总也才60多年时间,大致分为硬件.软件.互联

Android菜鸟的成长笔记(5)——Android系统源代码你下载了吗?

原文:Android菜鸟的成长笔记(5)--Android系统源代码你下载了吗? 在上一篇中我们用Android系统源代码分析了我们前面写的代码,有的朋友可能就会问怎么才能下载到Google官方的源代码呢?下面我们通过Git管理工具来对Android系统源代码进行下载.另外为了方便有的朋友下载,我将下载好的各个版本的源码存放到360云盘,云盘下载链接如下: http://yunpan.cn/QDEkq3uFrbvrI (访问密码:968e) 首先下载Git版本管理工具:下载地址:http://c

Android开发之在程序中时时获取logcat日志信息的方法(附demo源码下载)_Android

本文实例讲述了Android开发之在程序中时时获取logcat日志信息的方法.分享给大家供大家参考,具体如下: 今天分享一个在软件开发中很实用的例子,也是这几天在通宵加班中我使用的一个小例子, 在程序中监听Log信息. 为什么说它实用?原因是Android的开发厂商各种修改之后手机和手机之间以后存在很多差异.比如说魅族M9手机 开发中如果项目中涉及到访问手机系统的地方,例如访问系统短信库,M9手机它会提示一个dialog框 让用户自己去选择 访问还是不访问.这样就给开发适配带来了巨大的麻烦.本来