《深入解析Android 虚拟机》——第1章 获取并编译Android源码 1.1获取Android源码

简介: 要想研究Android系统的源码,需要先获取其源码。目前市面上主流的操作系统有Windows、Linux、Mac OS的操作系统,由于Mac OS源自于Linux系统,因此本书将讲解分别在Windows系统和Linux系统中获取Android源码的知识。

本节书摘来自异步社区《深入解析Android 虚拟机》一书中的第1章,第1.1节,作者:钟世礼著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第1章 获取并编译Android源码

在本章中,将详细讲解获取并编译Android源码的基本知识,介绍各个目录中主要文件的功能,为读者步入本书后面知识的学习打下基础。

1.1 获取Android源码

要想研究Android系统的源码,需要先获取其源码。目前市面上主流的操作系统有Windows、Linux、Mac OS的操作系统,由于Mac OS源自于Linux系统,因此本书将讲解分别在Windows系统和Linux系统中获取Android源码的知识。

1.1.1 在Linux系统获取Android源码
在Linux系统中,通常使用Ubuntu来下载和编译Android源码。由于Android的源码内容很多,Google采用了Git的版本控制工具,并对不同的模块设置不同的Git服务器,可以用repo自动化脚本来下载Android源码,下面介绍获取Android源码的过程。

(1)下载repo。

在用户目录下创建存放repo的bin文件夹,并把该路径设置到环境变量中去,具体命令如下所示:

$ 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参数来下载,例如下载Android 4.3正式版的命令如下所示:

$ repo init -u https://android.googlesource.com/platform/manifest -b
android-4.3_r1

在下载过程中会需要填写Name和E-mail,填写完毕之后,选择Y进行确认。最后提示repo初始化完成,这时可以开始同步Android源码了。同步过程非常漫长,需要大家耐心等待。执行下面命令开始同步代码:

$ repo sync
经过上述步骤后,便开始下载并同步Android源码了,界面效果如图1-1所示。

screenshot

1.1.2 在Windows平台获取Android源码
在Windows平台获取源码与在Linux上原理相同,但是需要预先在Windows平台上搭建一个Linux环境,此处需要用到Cygwin工具。Cygwin的作用是构建一套在Windows上的Linux模拟环境,下载Cygwin工具的地址如下所示:

http://cygwin.com/install.html
下载成功后会得到一个名为“setup.exe”的可执行文件,通过此文件可以更新和下载最新的工具版本,具体流程如下所示。

(1)启动Cygwin,如图1-2所示。

screenshot

(2)单击“下一步”按钮,选择第一个选项:从网络下载安装,如图1-3所示。

screenshot

(3)单击“下一步”按钮,选择安装根目录,如图1-4所示。

screenshot

(4)单击“下一步”按钮,选择临时文件目录,如图1-5所示。

screenshot

(5)单击“下一步”按钮,设置网络代理。如果所在网络需要代理,则在这一步进行设置,如果不用代理,则选择直接下载,如图1-6所示。

screenshot

(6)单击“下一步”按钮,选择下载站点。一般选择离得比较近的站点,速度会比较快,如图1-7所示。

screenshot

(7)单击“下一步”按钮,开始更新工具列表,如图1-8所示。

screenshot

(8)单击“下一步”按钮,选择需要下载的工具包。在此需要依次下载curl、git、python这些工具,如图1-9所示。

screenshot

为了确保能够安装上述工具,一定要用鼠标双击这些图标使之变为Install形式,如图1-10所示。

screenshot

(9)单击“下一步”按钮,需要经过漫长的等待过程,如图1-11所示。

             

screenshot

如果下载安装成功会出现提示信息,单击“完成”按钮即完成安装。打开安装好的Cygwin后,会模拟出一个Linux的工作环境,然后按照Linux平台的源码下载方法就可以下载Android源码了。

建议读者在下载Android源码时,严格按照官方提供的步骤进行,这一点对初学者来说尤为重要。另外,整个下载过程比较漫长,需要大家耐心等待。图1-12是笔者机器的命令截图。

screenshot

1.1.3 Windows获取Android L源码
在作者撰写本书时,Android系统的最新版本是Android L,此版本在Google官方网站的代号为“l-preview”。在Windows系统中获取Android L源码的具体流程如下。

(1)下载Git工具,其官方下载地址是http://www.git-scm.com/downloads ,如图1-13所示。

screenshot

下载后双击可执行文件进行安装,在安装过程按照默认选项安装即可。

(2)下载并安装TortoiseGit工具,下载地址是https://code.google.com/p/tortoisegit/ ,如图1-14所示。

screenshot

下载后双击下载后的可执行文件进行安装,安装过程按照默认选项安装即可。如果读者对英文不敢兴趣,可以下载TortoiseGit的中文版本,笔者安装的就是TortoiseGit中文版。

(3)新建一个保存源码的文件夹,例如“cc”,在文件夹上单击右键,然后选择“Git克隆”命令。

(4)在弹出的“Git克隆”对话框界面中,在“URL”后面的文本框中输入Android L项目下载路径,如图1-15所示。

screenshot

(5)单击图1-15中的“确定”按钮开始下载分支信息文件,下载后的文件被保存在“cc”文件夹中,具体目录结构如图1-16所示。

screenshot

(6)打开文件default.xml,在里面列出了Android L源码的各个文件夹中子文件夹目录的分支信息,具体格式如下所示:

<project path="abi/cpp" name="platform/abi/cpp" groups="pdk"/><project path="art" name="platform/ art"/>
<project path="bionic" name="platform/bionic" groups="pdk"/>
<project path="bootable/bootloader/legacy" name="platform/bootable/bootloader/legacy"/>
<project path="bootable/diskinstaller" name="platform/bootable/diskinstaller"/>
<project path="bootable/recovery" name="platform/bootable/recovery" groups="pdk"/>
<project path="cts" name="platform/cts" groups="cts"/>
<project path="dalvik" name="platform/dalvik"/>
<project path="developers/build" name="platform/developers/build"/>
<project path="developers/demos" name="platform/developers/demos"/>
<project path="developers/docs" name="platform/developers/docs"/>
<project path="developers/samples/android" name="platform/developers/samples/android"/>

例如“”表示在Android L的源码中,存在了一个名为“bootable”的根目录文件夹,而在“bootable”文件夹中又包含了一个名为bootloader”的子文件夹,而在“bootloader”文件夹下又包含了一个名为“legacy”的文件夹。

(7)开始下载Android L源码,在文件夹“cc”上单击右键,然后选择“Git克隆”命令。在弹出界面中输入Android L某个分支的下载路径,例如path=“art”表示“art”,此文件夹的下载地址是:https://android.googlesource.com/ a/art.git。然后勾选“分支”复选框,并在后面填写“l-prevew”分支,如图1-17所示。

screenshot

单击“确定”按钮后将开始下载Android L源码中的“art”文件夹的内容。同理,可以根据default.xml文件提供的路径信息继续下载其他文件夹的内容。

相关文章
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
652 2
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
1104 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
801 2
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1741 29
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码android版环境配置流程及功能明细
部署需基于 CentOS 7.9 系统,硬盘不低于 40G,使用宝塔面板安装环境,包括 PHP 7.3(含 Redis、Fileinfo 扩展)、Nginx、MySQL 5.6、Redis 和最新 Composer。Swoole 扩展需按步骤配置。2021.08.05 后部署需将站点目录设为 public 并用 ThinkPHP 伪静态。开发环境建议 Windows 操作系统与最新 Android Studio,基础配置涉及 APP 名称修改、接口域名更换、包名调整及第三方登录分享(如 QQ、微信)的配置,同时需完成阿里云与腾讯云相关设置。
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
765 4
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
移动开发 前端开发 JavaScript
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是"将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂式、原型模式、建造者模式。
1577 2
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
存储 前端开发 JavaScript
在线教育网课系统源码开发指南:功能设计与技术实现深度解析
在线教育网课系统是近年来发展迅猛的教育形式的核心载体,具备用户管理、课程管理、教学互动、学习评估等功能。本文从功能和技术两方面解析其源码开发,涵盖前端(HTML5、CSS3、JavaScript等)、后端(Java、Python等)、流媒体及云计算技术,并强调安全性、稳定性和用户体验的重要性。

热门文章

最新文章

推荐镜像

更多