zoukankan      html  css  js  c++  java
  • Android 源代码结构

    简介

      在使用Andriod SDK进行应用程序开发的时候,我们需要对源代码进行调试,有可能需要进入到某个Android API函数内部进行跟踪调试。但是,如果目标版本的SDK没有关联对应版本的源代码的话,就会提示你找不到源代码。

    图:找不到Android源码的提示

      

      我们都知道Android系统是一个开源工程,在网上可以下载到源代码。一般在网上搜索一下,就会找到各种下载源代码的方法,比如使用Git和Repo,android源代码下载的网址是http://android.git.kernel.org/。关于利用Git下载android源代码的方法,我就不再赘述了,因为网上的方法很多,这里给出一个参考链接Windows平台下Android源码的下载

      如果你跟我一样是初学者,相信看了上面的文章,你就知道如何使用Git下载android源码了。但是,看着http://android.git.kernel.org/ 站点下的各种目录和文件,相信你也会跟我一样傻眼,不知道那个目录下的文件对应是什么代码,想找到自己所需要的东西都比较难了。所以这里给大家介绍一下android源代码的结构,如果发现文章有错误之处,还请各位童鞋轻点砸砖!

    图:http://android.git.kernel.org/ 下纷繁复杂的文件

      

      认识Android源代码结构之前,先来再熟悉一下Android的系统架构吧!Android系统架构被分为四层,自下而上分别是:Linux操作系统及驱动层、本地框架和Java运行环境、Java框架、Java应用层。每一层的具体介绍在此就略过了。

    图:Android系统架构

      

    认识Android源代码结构

      Android代码的工程分为3个部分,在打开http://android.git.kernel.org/ 后看到的,就是android源代码的根目录。(建议:打开这个网站后,对照学习以下内容)

    • 核心工程(Core Project):建立Android 系统的基础,在根目录的各个文件夹中。
    • 扩展工程(External Project):使用其他开源项目扩展的功能,在external 文件夹中。
    • 包(Package):提供Android 的应用程序和服务,在package 文件夹中。

    1、Android 的核心工程

      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 编译的二进制支持 
    system/core 最小化可启动的环境
    system/extras 底层调试和检查工具

     

      

      除了上表列出的工程外,还有其他的工程,但大都是Android系统第2个层次的源代码。

    2、Android 扩展工程

      Android 的扩展工程包含在external文件夹中,是一些经过修改后适应Android系统的开源工程。有一些工程在主机上运行,也有些在目标机上运行。由于包含的扩展工程就多,就不一一列出,感兴趣的童鞋可以自己收集一些资料学习一下。

      

    3、Android 中的Java程序包

      Android中的Java程序包是Android系统架构第4层的内容,主要包括应用程序(Application)和内容提供器(Content Providers)两个部分,还有一个目录inputmethods是输入法的部分。

      应用程序(Application)在package/apps目录中,主要包括:AlarmClock,Browser,Calculator,Calendar,Camera,Contacts,E-mail,GoogleSearch,HTML Viewer,IM,Launcher,Mms,Music,PackageInstaller,Phone,Settings,SoundRecorder,Stk,Sync,Updater,VoiceDialer。

      

      内容提供者(Content Providers)在package/providers目录中,主要包括:CalendarProvider,ContactsProvider,DownloadProvider,DrmProvider,GoogleContactsProvider,GoogleSubsribedFeedsProvider,ImProvider,MediaProvider,SettingsProvider,SubscribedFeedsProvider,TelephonyProvider。

      

    按需下载

      如果你只需要其中的某一个或者几个文件的话,可以使用如下的git命令:

      git clone git://android.git.kernel.org/工程代码路径  

      (例如: git clone git://android.git.kernel.org/platform/packages/providers/DrmProvider.git)

      下载的目标地址,就是当前git命令行所在的当前目录。

    下载各个版本的Android SDK 源代码

      给大家提供一个在Windows下下载不同版本SDK源代码的方法,我也在网上找过其他的方法,但是都是Copy&Paste出来的。

      或者参考另一篇博文:使用git 工具下载android.jar Source Code

    1、下载Git,并且安装好;

    2、新建一个文件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-1.5r4"切换到模拟器(emulator)对应的版本;

    7、将frameworks/base/core/java下的所有文件拷贝到你的SDK目录下的"android-sdk-windows\platforms\android-3\sources"文件夹下。

      注意:每次切换模拟器的版本时,git会自动从网站上下载对应版本的源代码到frameworks/base/文件夹下,再将该文件夹下的文件拷贝到对应版本的SDK目录下即可。

  • 相关阅读:
    [hdu 2089]简单数位dp
    [fzu 2271]不改变任意两点最短路至多删的边数
    [bzoj 1143]最长反链二分图最大匹配
    [codeforces gym Matrix God]随机矩阵乘法
    [hdu 2298] 物理推导+二分答案
    url编码有个bug,不能直接用decodeURIComponent,如果遇到前面的$会报错。
    设置cookie的保存时间 下一篇
    js操作获取和设置cookie
    简单使用location.hash的方法 ,怎么做,有什么用? 简单的js路由页面方法。
    三个月之内开发项目最好用第三方库
  • 原文地址:https://www.cnblogs.com/crazypebble/p/2032604.html
Copyright © 2011-2022 走看看