做开发以来,总有那末1个习惯喜欢浏览源码,深入了解源码的设计意图所在。源码对开发人员有多么重要,想必喜欢查看
开起源码的开发人员都明白,如:Android开发中,Framework及底层开发对Android源码的依赖就蛮高了,有很多的需求是需要自己
再源码的基础上进行修改,如:现在的Android智能手机,我要修改1下顶的样式排列,那就需要下载源码,自己修改,然后自己刷
机重装系统。从Java到Android,再到IOS都有为开发人员提供源码这1个选项,但是问题就来了,如何获得公司提供的源码呢?对
于Java的源码,只需要在网站上下载对应版本的Jdk源码资源文件,然后导入就能够查看了;对IOS的源码,可以在XCode开发工具
上下载;但是,Android的源码相对起来是比较麻烦的,下面简单的分析1下:
在使用Andriod SDK进行利用程序开发的时候,我们需要对源代码进行调试,有可能需要进入到某个Android API函数内部进行
跟踪调试。但是,如果目标版本的SDK没有关联对应版本的源代码的话,就会提示你找不到源代码。
图:找不到Android源码的提示
我们都知道Android系统是1个开源工程,在网上可以下载到源代码。1般在网上搜索1下,就会找到各种下载源代码的方法,比如使用Git和Repo,android源代码下载的网址是http://android.git.kernel.org/。关于利用Git下载android源代码的方法,我就不再赘述了,由于网上的方法很多,这里给出1个参考链接Windows平台下Android源码的下载。如果你跟我1样是初学者,相信看了上面的文章,你就知道如何使用Git下载android源码了。但是,看着http://android.git.kernel.org/ 站点下的各种目录和文件,相信你也会跟我1样傻眼,不知道那个目录下的文件对应是甚么代码,想找到自己所需要的东西都比较难了。所以这里给大家介绍1下android源代码的结构,如果发现文章有毛病的地方,还请各位童鞋轻点砸砖!
图:http://android.git.kernel.org/ 下纷纷复杂的文件
认识Android源代码结构之前,先来再熟习1下Android的系统架构吧!Android系统架构被分为4层,自下而上分别是:Linux操作系统及驱动层、本地框架和Java运行环境、Java框架、Java利用层。每层的具体介绍在此就略过了。
图:Android系统架构
认识Android源代码结构
Android代码的工程分为3个部份,在打开http://android.git.kernel.org/ 后看到的,就是android源代码的根目录。(建议:打开这个网站后,对比学习以下内容)
1、Android 的核心工程
Android 的核心工程包括了对Android系统基本运行的支持,和Android系统的编译系统,工程的内容以下表:
工程名称 | 工程描写 |
bionic | [Build 系统] C运行时支持:libc、libm、libdl、动态linker |
bootloader/legacy | Bootloader 参考代码 (内核加载器,在内核运行之前运行) |
build | [Build 系统] Build系统 |
dalvik | Dalvik虚拟机 |
delelopment | 高层的开发和调试工具 |
framework/base | Android 核心的框架库 |
framework/policies/base | 框架配置策略 |
hardware/libhardware | 硬件抽象层库 |
hardware/ril | 无线接口层(Radio Interface Layer) |
kernel | Linux 内核 |
prebuilt | [预编译内核] 对Linux 和 Mac OS 编译的2进制支持 |
system/core | 最小化可启动的环境 |
system/extras | 底层调试和检查工具 |
除上表列出的工程外,还有其他的工程,但大都是Android系统第2个层次的源代码。
2、Android 扩大工程
Android 的扩大工程包括在external文件夹中,是1些经过修改后适应Android系统的开源工程。有1些工程在主机上运行,也有些在目标机上运行。由于包括的扩大工程就多,就不逐一列出,感兴趣的童鞋可以自己搜集1些资料学习1下。
3、Android 中的Java程序包
内容提供者(Content Providers)在package/providers目录中,主要包括:
CalendarProvider,ContactsProvider,DownloadProvider,DrmProvider
GoogleContactsProvider,GoogleSubsribedFeedsProvidercImProvider,MediaProvider
SettingsProvider,SubscribedFeedsProvider,TelephonyProvider。
按需下载
如果你只需要其中的某1个或几个文件的话,可使用以下的git命令:
git clone git://android.git.kernel.org/工程代码路径
(例如: git clone git://android.git.kernel.org/platform/packages/providers/DrmProvider.git)
下载的目标地址,就是当前git命令行所在确当前目录。
下载各个版本的Android SDK 源代码
给大家提供1个在Windows下下载不同版本SDK源代码的方法,我也在网上找过其他的方法,但是都是Copy&Paste出来的。
或参考另外一篇博文:使用git 工具下载android.jar Source Code
1、下载Git,并且安装好;
2、新建1个文件frameworks,这个文件夹就是用来寄存你将要下载的Android SDK源代码的目录
3、启动Git bash命令行,输入命令 git clone git://android.git.kernel.org/platform/frameworks/base.git frameworks,将会把android.git.kernel.org站点上的base文件夹下的所有文件和文件夹下载本地的frameworks文件夹中;
4、在Git命令行环境下,使用cd命令,逐渐进入到frameworks/base文件夹中;
5、使用 "git tag" 命令,显示所有的Android的源代码工程名称;
6、找到你所需要的源代码的名称和版本,在使用命令"git checkout android⑴.5r4"切换到摹拟器(emulator)对应的版本;
7、将frameworks/base/core/java下的所有文件拷贝到你的SDK目录下的"android-sdk-windowsplatformsandroid⑶sources"文件夹下。
注意:每次切换摹拟器的版本时,git会自动从网站上下载对应版本的源代码到frameworks/base/文件夹下,再将该文件夹下的文件拷贝到对应版本的SDK目录下便可。
通过上面的进程,就获得到谷歌提供的Android开起源码了,可以查看源码、参考Google开发者设置Android源码的意图了,方便自己的开发和理解。