转自:http://blog.csdn.net/finewind/article/details/46324507

1. Android系统架构:

android系统架构采用了分层架构的思想,如下图所示,从上到下共4层,分别为:应用程序层、应用程序框架层、系统库和android运行时层、linux内核层。

每层功能简要介绍如下:

应用程序层(JAVA应用程序):

该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。

应用程序框架层(JAVA框架):

该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。

系统库和android运行时层(本地框架和JAVA运行环境):

系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。

Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、android.net、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。

LINUX内核层:

Android核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。

驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。

2. android源码目录结构:

  1. Android 5.1
  2. |-- Makefile
  3. |-- abi
  4. |-- art
  5. |-- bionic (bionic C库)
  6. |-- bootable (启动引导相关代码)
  7. |-- build (存放系统编译规则及generic等基础开发包配置)
  8. |-- cts (Android兼容性测试套件标准)
  9. |-- dalvik (dalvik JAVA虚拟机)
  10. |-- developers
  11. |-- development (应用程序开发相关)
  12. |-- device
  13. |-- docs
  14. |-- external (android使用的一些开源的模组)
  15. |-- frameworks (核心框架——java及C++语言)
  16. |-- hardware (部分厂家开源的硬解适配层HAL代码)
  17. |-- kernel
  18. |-- libcore
  19. |-- libnativehelper
  20. |-- ndk
  21. |-- out (编译完成后的代码输出与此目录)
  22. |-- packages (应用程序包)
  23. |-- pdk
  24. |-- prebuilts (x86和arm架构下预编译的一些资源)
  25. |-- sdk (sdk及模拟器)
  26. |-- system (底层文件系统库、应用及组件——C语言)
  27. |-- tools
  28. `-- vendor (厂商定制代码)
  29. bionic 目录
  30. |-- benchmarks
  31. |-- libc (C库)
  32. | |-- arch-arm (ARM架构,包含系统调用汇编实现)
  33. | |-- ...
  34. | |-- bionic (由C实现的功能,架构无关)
  35. | |-- dns
  36. | |-- include (头文件)
  37. | |-- kernel (Linux内核中的一些头文件)
  38. | |-- private (?一些私有的头文件)
  39. | |-- stdio (stdio实现)
  40. | |-- tools (几个工具)
  41. | |-- tzcode (时区相关代码)
  42. | |-- upstream-dlmalloc
  43. | |-- upstream-freebsd
  44. | |-- upstream-netbsd
  45. | |-- upstream-openbsd
  46. | `-- zoneinfo (时区信息)
  47. |-- libdl (libdl实现,dl是动态链接,提供访问动态链接库的功能)
  48. |-- libm (libm数学库的实现,)
  49. |-- libstdc++ (libstdc++ C++实现库)
  50. |-- linker (动态链接器)
  51. `-- test
  52. bootable 目录
  53. |-- bootloader (适合各种bootloader的通用代码)
  54. | |-- legacy (估计不能直接使用,可以参考)
  55. | `-- lk
  56. `-- recovery (系统恢复相关)
  57. | |-- edify (升级脚本使用的edify脚本语言)
  58. | |-- etc (init.rc恢复脚本)
  59. | |-- minui (一个简单的UI)
  60. | |-- minzip (一个简单的压缩工具)
  61. | |-- mtdutils (mtd工具)
  62. | |-- res (资源)
  63. | |-- tools (工具)
  64. | | `-- ota (OTA Over The Air Updates升级工具)
  65. | `-- updater (升级器)
  66. build目录
  67. |-- core (核心编译规则)
  68. |-- libs
  69. | `-- host (主机端库,有android “cp”功能替换)
  70. |-- target (目标机编译对象)
  71. | |-- board (开发平台)
  72. | |-- product (开发平台对应的编译规则)
  73. `-- tools (编译中主机使用的工具及脚本)
  74. dalvik目录 dalvik虚拟机
  75. |-- dexdump (dex反汇编)
  76. |-- dexgen
  77. |-- dexlist (List all methods in all concrete classes in a DEX file.)
  78. |-- docs (文档)
  79. |-- dx (dx工具,将多个java转换为dex)
  80. |-- hit (?java语言写成)
  81. |-- opcode-gen
  82. |-- tools (工具)
  83. `-- vm (虚拟机实现)
  84. development 目录 (开发者需要的一些例程及工具)
  85. |-- apps (一些核心应用程序)
  86. | |-- BluetoothDebug (蓝牙调试程序)
  87. | |-- CustomLocale (自定义区域设置)
  88. | |-- Development (开发)
  89. | |-- Fallback (和语言相关的一个程序)
  90. | |-- FontLab (字库)
  91. | |-- GestureBuilder (手势动作)
  92. | |-- NinePatchLab (?)
  93. | |-- OBJViewer (OBJ查看器)
  94. | |-- SdkSetup (SDK安装器)
  95. | |-- SpareParts (高级设置)
  96. | |-- Term (远程登录)
  97. | `-- launchperf (?)
  98. |-- build (编译脚本模板)
  99. |-- cmds (有个monkey工具)
  100. |-- docs (文档)
  101. |-- host (主机端USB驱动等)
  102. |-- ide (集成开发环境)
  103. |-- libraries
  104. |-- ndk (本地开发套件——c语言开发套件)
  105. |-- samples (例程)
  106. | |-- AliasActivity (?)
  107. | |-- ApiDemos (API演示程序)
  108. | |-- BluetoothChat (蓝牙聊天)
  109. | |-- BrowserPlugin (浏览器插件)
  110. | |-- BusinessCard (商业卡)
  111. | |-- Compass (指南针)
  112. | |-- ContactManager (联系人管理器)
  113. | |-- CubeLiveWallpaper (动态壁纸的一个简单例程)
  114. | |-- FixedGridLayout (像是布局)
  115. | |-- GlobalTime (全球时间)
  116. | |-- HelloActivity (Hello)
  117. | |-- Home (Home)
  118. | |-- JetBoy (jetBoy游戏)
  119. | |-- LunarLander (貌似又是一个游戏)
  120. | |-- MailSync (邮件同步)
  121. | |-- MultiResolution (多分辨率)
  122. | |-- MySampleRss (RSS)
  123. | |-- NotePad (记事本)
  124. | |-- RSSReader (RSS阅读器)
  125. | |-- SearchableDictionary (目录搜索)
  126. | |-- SimpleJNI (JNI例程)
  127. | |-- SkeletonApp (空壳APP)
  128. | |-- Snake (snake程序)
  129. | |-- SoftKeyboard (软键盘)
  130. | |-- Wiktionary (?维基)
  131. | `-- WiktionarySimple(?维基例程)
  132. |-- scripts (脚本)
  133. |-- sdk (sdk配置)
  134. |-- sdk_overlay
  135. |-- sys-img
  136. |-- testrunner (?测试用)
  137. |-- tools (一些工具)
  138. `-- tutorials
  139. external 目录
  140. |-- apache-http (网页服务器)
  141. |-- bison (自动生成语法分析器,将无关文法转换成C、C++)
  142. |-- blktrace (blktrace is a block layer IO tracing mechanism)
  143. |-- bluetooth (蓝牙相关、协议栈)
  144. |-- bsdiff (diff工具)
  145. |-- bzip2 (压缩工具)
  146. |-- dhcpcd (DHCP服务)
  147. |-- e2fsprogs (EXT2文件系统工具)
  148. |-- elfcopy (复制ELF的工具)
  149. |-- elfutils (ELF工具)
  150. |-- embunit (Embedded Unit Project)
  151. |-- emma (java代码覆盖率统计工具)
  152. |-- esd (Enlightened Sound Daemon,将多种音频流混合在一个设备上播放)
  153. |-- expat (Expat is a stream-oriented XML parser.)
  154. |-- fdlibm (FDLIBM (Freely Distributable LIBM))

参考资料:

android系统架构: http://blog.csdn.net/wangloveall/article/details/8033725

android源码结构: http://www.cnblogs.com/shaweng/p/4043573.html

(转)android系统架构及源码目录结构的更多相关文章

  1. Android 5.1.1 源码目录结构

    点击打开链接 最近公司培训新同事,我负责整理一点关于android的基础知识,遥想当年,刚接触android,也是一头雾水, 啥都不懂,就是靠看文档和视频,对android有一个初步了解,然后就通过查 ...

  2. (转)Android 5.1.1 源码目录结构

    转自:http://blog.csdn.net/tfslovexizi/article/details/51888458最近公司培训新同事,我负责整理一点关于android的基础知识,遥想当年,刚接触 ...

  3. 【安卓本卓】Android系统源码篇之(一)源码获取、源码目录结构及源码阅读工具简介

    前言        古人常说,“熟读唐诗三百首,不会作诗也会吟”,说明了大量阅读诗歌名篇对学习作诗有非常大的帮助.做开发也一样,Android源码是全世界最优秀的Android工程师编写的代码,也是A ...

  4. 点菜网---Java开源生鲜电商平台-系统架构图(源码可下载)

    点菜网---Java开源生鲜电商平台-系统架构图(源码可下载) 1.点菜网-生鲜电商平台的价值与定位. 生鲜电商平台是一家致力于打造全国餐饮行业智能化.便利化.平台化与透明化服务的创新型移动互联网平台 ...

  5. chromium浏览器开发系列第三篇:chromium源码目录结构

    上两篇介绍了下载源码和编译源码,这次主要介绍chromium的源码目录结构,我也是通过源码和官网结合来跟大家说,如果有说的不准确的,欢迎交流. 另外,官网的不一定准确,他们其实也很懒,所以最主要还是靠 ...

  6. InfluxDB源码目录结构解析

    操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 influxdata主目录结构 [root@localhost ...

  7. (3.1)mysql基础深入——mysql二进制与源码目录结构介绍

    (3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...

  8. Linux基础系列—Linux内核源码目录结构

    /** ****************************************************************************** * @author    暴走的小 ...

  9. Locust源码目录结构及模块作用

    Locust源码目录结构及模块作用如下: 参考文章:https://blog.csdn.net/biheyu828/article/details/84031942

随机推荐

  1. 聊聊javascript的null和undefined

    只要是说到js的变量和数据类型,就脱不开null和undefined,这兄弟俩就是js的重要基础,不可不察,无数的同学们都用过放大镜多角度多批次地研究过这兄弟俩,真是深受欢迎.^-^ js也真是怪异, ...

  2. 第二章 使用接口(Using Interfaces)-书籍翻译

    PDF预览 下载地址 http://files.cnblogs.com/DKSoft/CodingInDelphi.pdf 1.1. 解耦(Decoupling) All through this b ...

  3. hive的join查询

    hive的join查询 语法 join_table: table_reference [INNER] JOIN table_factor [join_condition] | table_refere ...

  4. Inner Functions - What Are They Good For?

    Referece: https://realpython.com/blog/python/inner-functions-what-are-they-good-for/ Let’s look at t ...

  5. java基础篇---网络编程(UDP程序设计)

    UDP程序设计 在TCP的索引操作都必须建立可靠地连接,这样一来肯定会浪费大量的系统性能,为了减少这种开销,在网络中又提供了另外一种传输协议---UDP,不可靠的连接,这种协议在各个聊天工具中被广泛的 ...

  6. 【转】Java中JDK和JRE的区别是什么?它们的作用分别是什么?

    原文地址:http://blog.csdn.net/qq_33642117/article/details/52143824 JDK和JRE是Java开发和运行工具,其中JDK包含了JRE,但是JRE ...

  7. OAuth 授权过程工作原理讲解

    转自:http://www.imooc.com/article/10931 在一个单位中,可能是存在多个不同的应用,比如学校会有财务的系统会有学生工作的系统,还有图书馆的系统等等,如果每个系统都用独立 ...

  8. Gnome3 安装系统监视器

    . . . . . 之前使用Gnome2的时候可以向面板上添加一个系统监视器,相信很多人都用过这个实用的小工具,可以很方便的了解系统的运行概况.但是自从使用了Gnome3之后这个小工具不见了,Gnom ...

  9. WPF定义样式文件的方式

    场景:一个页面中有两类按钮,分别为样式A和样式B,但是WPF中不能像Web一样定义多个样式 样式定义方法: 1. 一个一个写内联样式 2. 定义样式<style TargetType=" ...

  10. C语言 · 成绩查询系统

    抱歉,昨天忘了往博客上更新,今天补上. 成绩查询系统 分值: 21 数学老师小y 想写一个成绩查询系统,包含如下指令: insert [name] [score],向系统中插入一条信息,表示名字为na ...