Android 最新架构
1、Android系统架构

最新的Android系统分为五层六区(域):
- Linux内核层(Linux Kernel):Android系统基于Linux2.6内核,这一层为Android设备各种硬件提供了底层驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等;
- 硬件抽象层(android hardware abstraction layer):安卓驱动硬件的方式与Linux不尽相同。传统Linux的驱动完全存活于内核空间。Android则在内核外部增加了硬件抽象层(HAL, Hardware Abstraction Layer),把一部分驱动功能放到HAL层中。安卓为什么费尽麻烦增加一个HAL呢?为了保护源代码。Linux内核采用了GPL协议,所以硬件生产商想要支持Linux系统,必须遵照GPL协议公开硬件驱动的源代码。但这些源代码中包含有许多硬件的设计信息,牵涉到硬件生产商的核心利益。而增加了HAL层之后,硬件厂商就不需要开放所有的驱动代码了。
- 系统运行库层(libraries):这一层通过一些C/C++库(so库)来为Android系统提供了主要的特性支持。如SQLite库提供了数据库支持,OpenGL ES库提供了3D绘图支持,Webkit库提供了浏览器内核支持等;
- 应用框架层(application framework):这一层主要提供构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可通过使用API来构建自己的应用程序;
- 应用层(applications):这一层主要用于手机应用的安装,如系统自带联系人、短信等程序,或是第三方应用程序
以上为五层五区,还有一个区域是存在于libraries层的Android运行时库(Android Runtime),它主要提供一些核心库,能够允许开发者使用Java语言来编写Android应用。另外Android运行时库中还包含了Dalvik虚拟机,它使得每一个Android应用都能运行在独立的进程中,且拥有一个自己的Dalvik虚拟机实例。相较于Java虚拟机,Dalvik是专门为移动设备定制的,它针对手机内存、CPU性能有限等情况作了优化处理。
2、拓展
2.1 Dalvik虚拟机
安卓的应用是由Java编写的,而包括HAL在内的Linux的库都是由C/C++编写的,这个落差由Dalvik虚拟机衔接的。当一个应用运行时,进程空间内将包含一个Dalvik虚拟机。Java程序编译为字节码文件,运行在Dalvik虚拟机中。根据Java代码中的要求,Dalvik通过JNI(Java Native Interface)调用底层的C/C++编写的功能。JNI是从Java中调用C/C++模块的接口。由于上层接口的标准化,字节码可以畅通无阻的跨平台运行。
Dalvik虚拟机内部是一个“虚拟”进程空间,有自己的栈和堆,管理代码的运行流程。如果这以“虚拟”进程空间不足,Dalvik内建的垃圾回收(garbage collection)机制会自动清空堆上不再使用的对象。自动的垃圾回收简化了程序员的工作,但速度较慢。手动内存管理效率高,但需要更多的编程,且容易犯错。
2.2 JNI
http://www.2cto.com/kf/201502/377185.html
http://www.cnblogs.com/mandroid/archive/2011/06/15/2081093.html
转自:https://www.cnblogs.com/nathan909/p/5492970.html
Android 最新架构的更多相关文章
- Android系统架构说明介绍
Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...
- Android官方架构组件指南
此指南适用于那些曾经或现在进行Android应用的基础开发,并希望了解和学习编写Android程序的最佳实践和架构.通过学习来构建强大的生产级别的应用. 注意:此指南默认你对Android开发有比较深 ...
- Android系统架构(一)
一.Android系统版本简介 Android操作系统已占据了手机操作系统的大半壁江山,截至本文写作时,Android操作系统系统版本及其详细信息,已发生了变化,具体信息见下表,当然也可以访问http ...
- Android操作系统架构
Android操作系统架构 Android操作系统整体应用架构 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高 ...
- Top10 应用都在用的Android最新知识
相信各位对Jetpack并不陌生,自从 Google 在 2018 年推出 Jetpack 之后,它就成为了 Android 未来发展的指向标. 作为一名安卓工程师,我们以前会经常吐槽Android碎 ...
- 转载: android 学习架构
http://www.cnblogs.com/forlina/archive/2011/06/29/2093332.html 引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWor ...
- Android程序架构基本内容概述
在Android操作系统中开发的应用程序都有一个结构缜密的架构.我们今天就来对这一Android程序架构做一个详细的分析.帮助大家了解程序开发的特点,以方便将来在应用程序开中明确自己的程序架构. An ...
- Android MVPR 架构模式
最近我在尝试让 Google 的 IO App 变得可单元测试,我这样做的其中一个原因是验证 Freeman 和 Pryce 在引用中对单元测试的总结.即使现在我还是没有把 IOSched 中的任何一 ...
- 转:微信Android客户端架构演进之路
转自: http://www.infoq.com/cn/articles/wechat-android-app-architecture 微信Android客户端架构演进之路 作者 赵原 发布于 20 ...
随机推荐
- Python基础:10函数参数
局部命名空间为各个参数值创建了一个名字,一旦函数开始执行,就能访问这个名字了. 在函数调用时,有非关键字参数和关键字参数之分,非关键字参数必须位于关键字参数之前. 在函数定义时,严格的顺序是:位置参数 ...
- 前后端登录注册之node剖析与token的使用状态
登录模块功能详解 1.用户名密码的格式验证 由前端完成,根据需求自行决定,不加叙述 2.点击提交按钮思路详解 前端将用户名 以及加密后的密码还有验证码输入的内容统一发给后端 由后端和数据库的数据进行 ...
- Python基础:23异常
一:概述 1:错误 错误有语法和逻辑上的区别.语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译.这些错误必须在程序执行前纠正.逻辑错误可能是由于不完整或是不合法的输入所致,还可能是 ...
- html--多媒体文件
添加多媒体文件 1.添加多媒体文件标记 <embed src="" width="" height=""></embed& ...
- 最全Pycharm教程(43)——Pycharm扩展功能之UML类图使用 代码结构
版权声明:本文为博主原创文章,转载时麻烦注明源文章链接,谢谢合作 https://blog.csdn.net/u013088062/article/details/50353202 1.什么是UML ...
- JPA进行insert操作时会首先select吗
在某个项目中,使用JPA的saveAll方法去批量写入数据时,通过打印sql,发现每次insert前都会先select一次,极大的浪费了写入性能. 分析一下代码,saveAll() @Transact ...
- 【b804】双栈排序
Time Limit: 1 second Memory Limit: 50 MB [问题描述] Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入 ...
- Python--day32--struct模块
struct模块:该模块可以把一个类型,如数字,转成固定长度的bytes
- CodeForces 242E "XOR on Segment"(线段树)
传送门 •题意 给你一个包含 n 个数的序列 a,定义序列上的两个操作: (1)$1,l,r\ :\ ans=\sum_{i=l}^{r}a_i$; (2)$2,l,r,x\ :\ \forall\ ...
- H3C DHCP中继工作原理
