您的位置:首页 > 运维架构 > 网站架构

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

2016-11-09 11:46 381 查看

Android

1.系统架构

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 (厂商定制代码)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息