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,GoogleSubsribedFeedsProvidercImProvider,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目录下即可。

  • 相关阅读:
    【leetcode】1295. Find Numbers with Even Number of Digits
    【leetcode】427. Construct Quad Tree
    【leetcode】1240. Tiling a Rectangle with the Fewest Squares
    【leetcode】1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold
    【leetcode】1291. Sequential Digits
    【leetcode】1290. Convert Binary Number in a Linked List to Integer
    【leetcode】1269. Number of Ways to Stay in the Same Place After Some Steps
    【leetcode】1289. Minimum Falling Path Sum II
    【leetcode】1288. Remove Covered Intervals
    【leetcode】1287. Element Appearing More Than 25% In Sorted Array
  • 原文地址:https://www.cnblogs.com/waw/p/2156581.html
Copyright © 2011-2022 走看看