在分析Android源码前,首先要学会如何下载和编译系统。本章将向读者完整地呈现Android源码的下载流程、常见问题以及处理方法,并从开发者的角度来理解如何正确地编译出Android系统(包括原生态系统和定制设备)。
Android源码下载指南
基于Repo和Git的版本管理
Git是一种分布式的版本管理系统,最初被设计用于Linux内核的版本控制。本书工具篇中对Git的使用方法、原理框架有比较详细的剖析,建议读者先到相关章节阅读了解。
Git的功能非常强大,速度也很快,是当前很多开源项目的首选工具。不过Git也存在一定的缺点,如相对于图形界面化的工具没那么容易上手、需要对内部原理有一定的了解才能很好地运用、不支持断点续传等。
为此,Google提供了一个专门用于下载Android系统源码的Python脚本,即Repo。
在Repo环境下,版本修改与提交流程是:
- 用Repo创建新的分支,通常情况下不建议在master分支上操作;
- 开发者根据需求对项目文件进行修改;
- 利用git add命令将所做修改进行暂存;
- 利用git commit命令将修改提交到仓库;
- 利用repo upload命令将修改提交到代码服务器上。
由此可见,Repo与我们在工具篇中讨论的Git流程有些许不同,差异主要体现在与远程服务仓库的交互上;而本地的开发仍然是以原生的Git命令为主。下面我们讲解Repo的一些常用命令,读者也可以拿它和Git进行仔细比较。
1.同步
同步操作可以让本地代码与远程仓库保持一致。它有两种形式。
如果是同步当前所有的项目: $ repo sync
或者也可以指定需要同步的某个项目:$ repo sync [PROJECT1] [PROJECT2]…
2.分支操作
创建一个分支所需的命令:$ repo start <BRANCH_NAME>
也可以查看当前有多少分支: $ repo branches
或者:$ git branch
以及切换到指定分支:$ git checkout <BRANCH_NAME>
3.查询操作
查询当前状态:$ repo status
查询未提交的修改:$ repo diff
4.版本管理操作
暂存文件: g i t a d d 提交文件: git add 提交文件: gitadd提交文件:git commit
如果是提交修改到服务器上,首先需要同步一下: r e p o s y n c 然后执行上传指令: repo sync 然后执行上传指令: reposync然后执行上传指令:repo upload
Android源码下载流程
值得一提的是,Android官方建议我们务必确保编译系统环境符合以下几点要求:
Linux或者Mac系统
在虚拟机上或是其他不支持的系统(例如Windows)上编译Android系统也是可能的,事实上Google鼓励大家去尝试不同的操作系统平台。不过Google内部针对Android系统的编译和测试工作大多是在Ubuntu LTS(14.04)上进行的。因而建议开发人员也都选择同样的操作系统版本来开展工作,经验告诉我们这样可以少走很多弯路。
如果是在虚拟机上运行的Linux系统,那么理论上至少需要16GB的RAM/Swap才有可能完成整个Android系统的编译。
对于Gingerbread(2.3.X)及以上的版本,64位的开发环境是必需的。其他旧的Android系统版本可以采用32位的开发环境。
需要至少100GB以上的磁盘空间才能完成系统的一系列编译过程。