前几天,又切换回ubuntu11.04系统了,体验如下unity桌面。
android系统源码(包括sdk源码)的下载主要是须要用到git工具,关于git工具的使用我会抽空专门介绍,这里用到的时候简略说明一下。
1.安装git和curl
命令: linux
1
|
$sudo apt-get install git-core curl
|
说明:
curl是一个向服务器或从服务器传输数据的工具,它支持HTTP 、HTTPS、FTP 、 FTPS 、 SCP、SFTP、TFTP、DICT、TELNET、LDAP或FILE等协议。对于web开发人员来讲,它对 HTTP POST的支持为咱们提供了很大的帮助。 android
git是分布式的版本控制系统,在这里负责把远程版本库的源代码clone下来。 git
2. 安装repo
命令: web
1
2
3
4
5
6
7
|
$mkdir bin
//下载repo脚本到本地bin文件夹下
$curl http://android.git.kernel.org/repo >~/bin/repo
//设置本地repo的可执行权限
$chmod a+x ~/bin/repo
//临时把repo添加到环境变量中,方便后面执行。
$export PATH=~/bin:$PATH
|
说明:
repo是一个基于git的版本库管理工具,能够简化android开发中使git的使用。在这里,使用repo和官方提供的android project列表自动批量下载android整个项目,免去了大量下载各个项目的手动工做量。 ubuntu
3.初始化repo客户端
命令: 设计模式
1
2
3
4
5
6
|
//建立目录android/android-source来存放下载的源码
$mkdir android/android-source -p
//进入目录
$cd android/android-source
//获取项目列表而且初始化目录
$repo init -u git://android.git.kernel.org/platform/manifest.git
|
初始化完成后会显示repo initialized in /home/http://www.cnblogs.com/xx,以下图:
服务器
4.同步版本库
命令: 架构
1
|
$repo sync
|
说白了,就是从服务器上下载最新的代码。
接下来就是漫长的等待,本人10M带宽,依然下载了几个小时。忘记截图了,就不贴了。 框架
5.下载单个项目的源码
前面咱们把android整个项目都下载下来了 ,包括虚拟机,SDK,NDK等,可是对于至关多的应用开发者来讲,只须要下载android sdk源代码就足够了,不必下载3个多G的所有源码。
因此,咱们以SDK源码为例子,演示如何使用git下载单个项目工程(下载单个项目不须要repo工具)。
打开网页 http://android.git.kernel.org/,包含大量的android相关的工程。
android SDK的代码包括在android核心框架中。工程路径为 platform/frameworks/base.git。
命令: eclipse
1
2
3
4
|
//进入以前创建的android目录
$cd android
//克隆服务器端的base的版本库和代码到android-sdk-source目录下
$git clone git://android.git.kernel.org/platform/frameworks/base.git android-sdk-source
|
等待一下子,大概200M,下载完成后,以下图。
相似的,你能够下载任何其余的单个项目到本地。
6.获取各个版本SDK源码
关于获取各个版本的SDK源码,网上仍是身边常常有人急需阿,跪求阿什么的,今天我在这里抛砖引玉,演示一下方法,可是不提供下载,毕竟文件仍是有必定的大小的。
首先咱们现获取SDK的各版本的标志,有两种方式:1.经过分支branch;2.经过标签tag。
咱们先看看结果:
1
2
3
4
5
6
|
//进入base版本库目录
$cd android-sdk-source
//显示全部的分支,包括远程和本地分支,咱们没有创建分支,全部没有本地分支
$git branch -a
//显示全部标签
$git tag
|
分别以下面二图:
图A git branch -a
图B git tag
从上面两张图中咱们能够看到各个分支号和标签号,这是咱们切换分支和检出标签的基础。关于二者的区别, 若是你只是下载的话,你们暂时不须要知道,branch是能够提交修改的,tag则只是做一个重要的标记,可是不能再修改标签对应的代码了。
你们都知道android在2.3中开始添加了NFC,因此源代码中也会增长NFC目录,咱们以此为基础,切换到2.3以前和以后的分支,比较一下。
咱们使用git checkout (branch)命令来检出分支,咱们分别检出2.2和2.3版本的分支(同一目录下切换):
获得的结果分别是:
图A froyo版本(android2.2)
图B gingerbread版本(2.3版本,姜饼)
对比图A和图B,咱们发现图B多了一个nfc目录,说明咱们切换到了2.3版本。
检出标签也是如出一辙的,好比git check android-sdk-2.1_r1
经过切换不一样的分支,咱们能够获取全部不一样版本的SDK源代码,切换的速度仍是很快的。
7.连接android.jar源码
通常咱们都喜欢下载各个版本的sdk源码,分别存放在各个版本的sources目录下,以便eclipse方法中android.jar对应连接。这种方法我就很少介绍。
今天,我介绍另一种方法让咱们只须要一个简单的命令就能方便的切换源代码,呵呵,你是否是想到了,没错,就是使用前面的checkout命令切换。
在工程的android.jar右键attach source,选择前面的android-sdk-source文件夹,
连接完来后,就可查看SDK源代码了,若是版本不一致,咱们只须要在android-sdk-source目录下执行git checkout branchname切换到相应的版本就OK了,不再用找各个版本的源代码了。
固然,两种方法各有长短,以为哪一种方便就用哪一种好了,本人是linux环境,因此我选择后一种会更好。
8.小结 源码下下来就是一笔财富,坚持查看源代码,分析其中的底层实现和框架模式,都绝对是极佳的学习经历,必定大有益处。 后面有机会我可能会为你们分析下android源码的架构层次,编译本身的android系统,如何深度定制android等等,这个看时间安排和具体状况。 不过有一个是能够确定的,我在后面会单独开一个专题来剖析android源码:1.用源码来解说常见的东西;2.设计模式,敬请期待!