zoukankan      html  css  js  c++  java
  • (转)android系统架构及源码目录结构

    转自: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源码目录结构:

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



    参考资料:

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

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

  • 相关阅读:
    【8.12测试】辉夜的见面礼
    全国标准信息公共服务平台
    win10易升更新
    WPF 中的父子窗口
    C#通过事件跨类调用WPF主窗口中的控件
    Apache Hudi 介绍与应用
    【总结】Spark任务的core,executor,memory资源配置方法
    springboot基于spark-launcher构建rest api远程提交spark任务
    spark 输出到hdfs小文件过多
    大数据
  • 原文地址:https://www.cnblogs.com/lihaiping/p/5509337.html
Copyright © 2011-2022 走看看