Android及系统架构目录结构介绍

时间:2023-01-20 05:23:24

Android

1.系统架构

android系统架构一共分为四层:

Android及系统架构目录结构介绍

简单的翻译版本

Android及系统架构目录结构介绍

  • Linux内核(Linux Kernel)

    • Android运行在linux kernel 2.6之上,但是把linux内受GNU协议约束的部分做了取代,这样在Android的程序可以用于商业目的。
    • Linux 内核是硬件和软件层之间的抽象层。
    • 驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。

  • 中间件
    • 中间件包括两部分:核心库和运行时(libraries & Android runtime)
    • 核心库包括,SurfaceManager 显示系统管理库,负责把2D或3D内容显示到屏幕;Media Framework 媒体库,负责支持图像,支持多种视频和音频的录制和回放;SQlite 数据库,一个功能强大的轻量级嵌入式关系数据库;WebKit 浏览器引擎等。
    • Dalvik虚拟机:区别于Java虚拟机的是,每一个Android 应用程序都在它自己的进程中运行,都有一个属于自己的Dalvik 虚拟机,这一点可以让系统在运行时可以达到优化,程序间的影响大大降低。Dalvik虚拟机并非运行Java字节码,而是运行自己的字节码。
  • 应用程序框架(Application Framework)
    • 丰富而又可扩展性的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids), 文本框(text boxes),按钮( buttons), 可嵌入的web 浏览器。
    • 内容提供者(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
    • 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件( layoutfiles )。
    • 通知管理器(Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
    • 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。
  • 应用程序 (Applications)
    • Android 系统会内置一些应用程序包包括email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。 

2.目录结构

应用目录结构:

src: 编写java代码的目录

    gen:包含了Android的资源文件的标识符,不需要程序员维护,自动添加的而且有分类
    libs: 当前工程所依赖的jar包. 
    assets: 放置一些程序所需要的媒体文件. 原生资源文件
    bin: 工程的编译目录. 存放一些编译时产生的临时文件和当前工程的.apk文件. 
    res(resources): 资源文件. 
    drawable: 存放程序所用的图片. 
    layout: 存放Android的布局文件. 
    menu: 存放android的OptionsMenu菜单的布局. 
    values (应用程序所需要的数据. 会在R文件中生成id) 
    strings.xml 存放android字符串. 
    dimens.xml 存放屏幕适配所用到的尺寸. 
    style.xml 存放android下显示的样式. 
    values-sw600dp 7寸平板所对应的值 
    values-sw720dp-land 10寸平板所对应的值 
    values-v11 指定3.0版本以上的手机显示的样式. 
    values-v14 指定4.0版本以上的手机显示的样式. 
    AndroidManifest.xml: android应用程序的入口文件. 声明了android里边的组件. 和相关配置信息. 
    proguard-project.txt: 加密当前程序所使用.

    project.properties: 指定当前工程采用的开发工具包的版本 

源码目录结构:

|-- abi        (应用程序二进制接口,生成libgabi++和.so相关库文件)
|-- art (google在4.4后加入用来代替Dalvik的运行时环境)
|-- bionic (bionic C库)
|-- bootable (启动引导程序的源码)
|-- build (android的编译系统)
|-- common(linux内核文件)
|-- cts (android兼容性测试套件)
|-- dalvik (dalvik JAVA虚拟机源码)
|-- developers (开发使用的例子)
|-- development (开发所需要的一些例程、文档和工具)
|-- device(设备相关代码和编译脚本)
|-- docs(文档)
|-- external (android使用的扩展库)
|-- frameworks (android应用框架层,为应用层提供API)
|-- gdk(开发谷歌眼镜的sdk)
|-- hardware (硬解适配层HAL代码)
|-- libcore(java核心库)
|-- libnativehelper(支持android的类库)
|-- ndk (原生开发套件,提供了一些列工具可以快速开发c/c++的动态库)
|-- out (编译完成后的输出目录)
|-- packages (应用程序包)
|-- pdk(平台开发套件)
|-- prebuilts (编译所需要的程序文件,主要包含不同平台下的ARM编译器)
|-- sdk (sdk及模拟器)
|-- system (嵌入式Linux的一些系统工具,如adb、fastboot、logcat等)
|-- uboot(uboot的源码)
|-- vendor (厂商定制代码)