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

Android 5.1

|-- Makefile

|-- abi

|-- art

|-- bionic (bionic C库)

|-- bootable (启动引导相关代码)

|-- build (存放系统编译规则及generic等基础开发包配置)

|-- cts (Android兼容性测试套件标准)

|-- dalvik (dalvik JAVA虚拟机)

|-- developers

|-- development (应用程序开发相关)

|-- device

|-- docs

|-- external (android使用的一些开源的模组)

|-- frameworks (核心框架——java及C++语言)

|-- hardware (部分厂家开源的硬解适配层HAL代码)

|-- kernel

|-- libcore

|-- libnativehelper

|-- ndk

|-- out (编译完成后的代码输出与此目录)

|-- packages (应用程序包)

|-- pdk

|-- prebuilts (x86和arm架构下预编译的一些资源)

|-- sdk (sdk及模拟器)

|-- system (底层文件系统库、应用及组件——C语言)

|-- tools

`-- vendor (厂商定制代码)

bionic 目录

|-- benchmarks

|-- libc (C库)

| |-- arch-arm (ARM架构,包含系统调用汇编实现)

| |-- ...

| |-- bionic (由C实现的功能,架构无关)

| |-- dns

| |-- include (头文件)

| |-- kernel (Linux内核中的一些头文件)

| |-- private (?一些私有的头文件)

| |-- stdio (stdio实现)

| |-- tools (几个工具)

| |-- tzcode (时区相关代码)

| |-- upstream-dlmalloc

| |-- upstream-freebsd

| |-- upstream-netbsd

| |-- upstream-openbsd

| `-- zoneinfo (时区信息)

|-- libdl (libdl实现,dl是动态链接,提供访问动态链接库的功能)

|-- libm (libm数学库的实现,)

|-- libstdc++ (libstdc++ C++实现库)

|-- linker (动态链接器)

`-- test

bootable 目录

|-- bootloader (适合各种bootloader的通用代码)

| |-- legacy (估计不能直接使用,可以参考)

| `-- lk

`-- recovery (系统恢复相关)

| |-- edify (升级脚本使用的edify脚本语言)

| |-- etc (init.rc恢复脚本)

| |-- minui (一个简单的UI)

| |-- minzip (一个简单的压缩工具)

| |-- mtdutils (mtd工具)

| |-- res (资源)

| |-- tools (工具)

| | `-- ota (OTA Over The Air Updates升级工具)

| `-- updater (升级器)

build目录

|-- core (核心编译规则)

|-- libs

| `-- host (主机端库,有android “cp”功能替换)

|-- target (目标机编译对象)

| |-- board (开发平台)

| |-- product (开发平台对应的编译规则)

`-- tools (编译中主机使用的工具及脚本)

dalvik目录 dalvik虚拟机

|-- dexdump (dex反汇编)

|-- dexgen

|-- dexlist (List all methods in all concrete classes in a DEX file.)

|-- docs (文档)

|-- dx (dx工具,将多个java转换为dex)

|-- hit (?java语言写成)

|-- opcode-gen

|-- tools (工具)

`-- vm (虚拟机实现)

development 目录 (开发者需要的一些例程及工具)

|-- apps (一些核心应用程序)

| |-- BluetoothDebug (蓝牙调试程序)

| |-- CustomLocale (自定义区域设置)

| |-- Development (开发)

| |-- Fallback (和语言相关的一个程序)

| |-- FontLab (字库)

| |-- GestureBuilder (手势动作)

| |-- NinePatchLab (?)

| |-- OBJViewer (OBJ查看器)

| |-- SdkSetup (SDK安装器)

| |-- SpareParts (高级设置)

| |-- Term (远程登录)

| `-- launchperf (?)

|-- build (编译脚本模板)

|-- cmds (有个monkey工具)

|-- docs (文档)

|-- host (主机端USB驱动等)

|-- ide (集成开发环境)

|-- libraries

|-- ndk (本地开发套件——c语言开发套件)

|-- samples (例程)

| |-- AliasActivity (?)

| |-- ApiDemos (API演示程序)

| |-- BluetoothChat (蓝牙聊天)

| |-- BrowserPlugin (浏览器插件)

| |-- BusinessCard (商业卡)

| |-- Compass (指南针)

| |-- ContactManager (联系人管理器)

| |-- CubeLiveWallpaper (动态壁纸的一个简单例程)

| |-- FixedGridLayout (像是布局)

| |-- GlobalTime (全球时间)

| |-- HelloActivity (Hello)

| |-- Home (Home)

| |-- JetBoy (jetBoy游戏)

| |-- LunarLander (貌似又是一个游戏)

| |-- MailSync (邮件同步)

| |-- MultiResolution (多分辨率)

| |-- MySampleRss (RSS)

| |-- NotePad (记事本)

| |-- RSSReader (RSS阅读器)

| |-- SearchableDictionary (目录搜索)

| |-- SimpleJNI (JNI例程)

| |-- SkeletonApp (空壳APP)

| |-- Snake (snake程序)

| |-- SoftKeyboard (软键盘)

| |-- Wiktionary (?维基)

| `-- WiktionarySimple(?维基例程)

|-- scripts (脚本)

|-- sdk (sdk配置)

|-- sdk_overlay

|-- sys-img

|-- testrunner (?测试用)

|-- tools (一些工具)

`-- tutorials

external 目录

|-- apache-http (网页服务器)

|-- bison (自动生成语法分析器,将无关文法转换成C、C++)

|-- blktrace (blktrace is a block layer IO tracing mechanism)

|-- bluetooth (蓝牙相关、协议栈)

|-- bsdiff (diff工具)

|-- bzip2 (压缩工具)

|-- dhcpcd (DHCP服务)

|-- e2fsprogs (EXT2文件系统工具)

|-- elfcopy (复制ELF的工具)

|-- elfutils (ELF工具)

|-- embunit (Embedded Unit Project)

|-- emma (java代码覆盖率统计工具)

|-- esd (Enlightened Sound Daemon,将多种音频流混合在一个设备上播放)

|-- expat (Expat is a stream-oriented XML parser.)

|-- fdlibm (FDLIBM (Freely Distributable LIBM))

参考资料:

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

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

linux与安卓系统目录,android系统架构及源码目录结构相关推荐

  1. android系统架构及源码目录结构

    本文转载自[踏雪行]的博客(http://blog.csdn.net/finewind/article/details/46324507) 1. Android系统架构: android系统架构采用了 ...

  2. Android 8.0.0-r4源码目录结构详解

    Android的移植按如下流程: (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来. (2)正确挂载文件系统,确保内核启动参数和 android 源代码 syste ...

  3. Android 5.1.1 源码目录结构说明

    转自:http://blog.csdn.net/tfslovexizi/article/details/51888458 Android 5.1.1 |-- bootable (启动引导相关代码) | ...

  4. Android系统源码学习——源码目录结构介绍

    2019独角兽企业重金招聘Python工程师标准>>> Android 4.0源码目录结构: 本文介绍Android源码目录结构,以便读者理清Android编译系统核心代码在Andr ...

  5. [附源码]计算机毕业设计Python+uniapp安卓门禁系统appo8yd7(程序+源码+LW+远程部署)

    [附源码]计算机毕业设计Python+uniapp安卓门禁系统appo8yd7(程序+源码+LW+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pyt ...

  6. Android 8.0学习(32)---Android 8.0源码目录结构详解

    Android 8.0源码目录结构详解 android的移植按如下流程:     (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来.     (2)正确挂载文件系统 ...

  7. Android 10 根文件系统和编译系统(四):Android源码目录结构

    配套系列教学视频链接: Android 10.0 AOSP源码编译: https://www.100ask.net/detail/p_60a1e037e4b0adb2d864c6d8/6 Androi ...

  8. 【lLinux驱动】linux内核源码目录结构

    linux内核源码目录结构 代码目录结构 在阅读源码之前,还应知道Linux内核源码的整体分布情况.现代的操作系统一般由进程管理.内存管理.文件系统.驱动程序和网络等组成.Linux内核源码的各个目录 ...

  9. Linux操作系统内核源码目录结构详解

    Linux内核源码目录结构 代码目录结构 在阅读源码之前,还应知道Linux内核源码的整体分布情况.现代的操作系统一般由进程管理.内存管理.文件系统.驱动程序和网络等组成.Linux内核源码的各个目录 ...

最新文章

  1. Oracle - 数据库的实例、表空间、用户、表之间关系
  2. 【Hibernate步步为营】--(一对多映射)之双向关联
  3. 当我们扩张时——技术商业策略圆桌第一弹
  4. 监控路由器虚拟服务器,远程监控路由器虚拟服务器设置
  5. 如何配置SAP Analytics Cloud到SAP Cloud for Customer的连接
  6. json 取值判断_【收藏级】.NETCore3.1中的Json互操作解读
  7. P1064 [NOIP2006 提高组] 金明的预算方案
  8. 基于python实现遗传算法
  9. 30个你必须记住的CSS选择符
  10. hive 前7天标准差_为啥科目三考试前只让练7天?教练实话实说:这是为你们好...
  11. frok的一个Demo测试素数
  12. VS2019添加自定义发布本地的Nuget(.nupkg文件)
  13. JetBrains系列产品学生认证申请免费使用教程
  14. 建模实训报告总结_3d建模实习报告
  15. OpenJDK构建工具IcedTea 1.7发布
  16. echarts渐变色
  17. 电器组装行业ERP解决方案
  18. 1.什么是PyTorch
  19. SolidWorks 钣金 焊接 管道 布线视频教程
  20. 基于模型的系统工程最佳实践-读书心得

热门文章

  1. vectorvn1610报价_【8.5873.5444.G323】价格_厂家 - 中国供应商
  2. android uri转drawable,Glide4(URL转File,URL转Drawable)
  3. ubuntu配置java_Ubuntu 16.04下Java环境安装与配置
  4. bilibili有电脑版吗_你体验过电脑版的《和平精英》吗?不用担心内存,也不用担心卡顿...
  5. 笔记本电脑锁_联想都不敢想之2020年笔记本电脑推荐
  6. Too many files open; check that FILES = 20 in your CONFIG.SYS file 解决方案
  7. AtCoder AGC031F Walk on Graph (图论、数论)
  8. java图片上传下载_java web 文件上传与下载
  9. ansys fluent udf manual 下载_Fluent内置流固耦合01 使用流程
  10. 计算机学院在武汉大学,中国最美大学—武汉大学