我对android 软件栈了解
android 软件栈如图所示:

Android平台的核心是Linux内核,它负责设备驱动程序、资源访问、电源管理和完成其他操作系统的职责。提供的设备驱动程序包括显示器、照相机,键盘、WiFi、闪存、音频和IPC(Inter:ProcessConmnmication,进程间通信)(IPC binder机制)。尽管核心是Linux,但Android设备(比如Motorola Droid,乐os,cymode)上的绝大部分应用程序都是使用Java开发,通过DalⅥk VM运行的。
我们看一下另一层,内核之上是许多C/C++库,比如OpenGL、WebKit、FreeType、SSL(Secure SocketsLayer,安全套接字层)、libc (C运行时库),SQLite和媒体。基于BSD (Berkeley Sofiware Distribution,伯克利软件套件)的系统C库针对嵌入式Linux设备进行了调优(大小约为原始大小的一半).媒体库基于PacketVideo(www.packetvideo.com/)的OpenCORE。这些库负责录制和播放音频和视频格式的内容。一个名为Surface ManagertYJ库控制对显示系统的访问,支持2D和3D。在新版本中可能添加更多这样的本地库。
WebKit库负责浏览器支持.WebKit也是Google公司的Chrome和苹果公司的Safari使用的库。
FreeType库负责字体支持。SQLite (www.sqlite.org/)是一个可在设备自身上使用的关系数据库。SQLite也是关系数据库的一项独立的开源成果,没有直接绑定到Android。适用于SQLite的工具也可用于Android教据库。
大多数应用程序框架都通过Dalvik VM访问这些核心库,Dalvik VM就像Android平台的入口。上节已经提到,Dalvik经过了优化,可以运行多个VM实例。访问这些核心库时,每个Java应用程序都会获得自己的VM实例。
Android Java APl的主要库包括电话、资源,位置、Ul、ContentProvider(数据)和包管理器(安装、安全等)。程序员使用此Java API开发最终用户应用程序。设备上的一些最终用户应用程序示例包括Home、Contacts、Phone、Browser等。
Android还支持Google公司一个名为Skia的自定义2D图形库,这个库是使用C和C++编写的。Skia也是Google Chrome溯览器的核心组件。然而,Android中的3D API基于来自Khronos小组(www.khronos.org)的一个OpenGL ES实现。OpenGL ES包含OpenGL中面向嵌入式系统的子集。
从媒体角度讲,Android平台支持最常见的音频,视频和图像格式。也是支持多媒体最多的移动平台。从无线角度讲.Android的API可支持蓝牙,EDGE、3G、WiFiaIGSM (Global System for Mobile Communication.全球移动通信系统)、电话而具体则取决于设备硬件。
我对android 软件栈了解的更多相关文章
- Android软件开发之ListView 详解【转】
ListView的使用方法 ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件 绘 ...
- android软件开发之webView.addJavascriptInterface循环渐进【二】
本篇文章由:http://www.sollyu.com/android-software-development-webview-addjavascriptinterface-cycle-of-gra ...
- android软件开发之webView.addJavascriptInterface循环渐进【一】
本篇文章由:http://www.sollyu.com/android-software-development-webview-addjavascriptinterface-cycle-of-gra ...
- win 10 Hbuilder1.2.1连接Genymotion 调试Android 软件
这里记录一下 Hbuilder1.2.1连接Genymotion 调试Android 软件 的过程: 步骤一:把Genymotion 的 adb.exe 路径配置到 Hbuilder 中 在 菜单栏 ...
- Android 软件管理工具类Utils
Android 软件管理工具类Utils /** * Created by uilubo on 2015/9/30. * 工具类 */ public class Utils { public stat ...
- Android 软件退出系统方法重写
Android 软件退出系统按键方法重写 //针对Andriod软件退出系统按键方法重写 ;//key down time @Override public boolean onKeyDown(int ...
- Android软件更新
Android软件更新 //得到当前版本编码和版本名称. public static int getVerCode(Context context) { ; try { verCode =).vers ...
- 使用ViewPager实现android软件使用向导的功能
现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了. 先看下效果图: 首先需要一个布局文件,是FlameLayout组成的,里面包 ...
- android软件中加入广告实现方法
经过了一番折腾,忙忙碌碌了一下午,终于搞明白了Android软件界面嵌入广告的方法,以下我以嵌入有米广告为例小结一下: 步骤一,下载有米广告SDK,将 youmi-android.jar 导入想要嵌入 ...
随机推荐
- 【原】Spring整合Redis(第三篇)—盘点SDR搭建中易出现的错误
易错点01:Spring版本过低导致的错误[环境参数]Redis版本:redis-2.4.5-win32-win64Spring原来的版本:4.1.7.RELEASESpring修改后的版本:4.2. ...
- CentOS 7设置KVM硬盘模式为SCSI
找到一下节点,把target节点的dev改成s开头,bus改成scsi即可,并删除address节点: 以此内推,如果要修改为ide需要修改dev为h开头,bus改成ide. 参考: https:// ...
- HDU 4821 String(2013长春现场赛I题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4821 字符串题. 现场使用字符串HASH乱搞的. 枚举开头! #include <stdio.h ...
- .Net Discovery 系列之一--string从入门到精通(上)
string是一种很特殊的数据类型,它既是基元类型又是引用类型,在编译以及运行时,.Net都对它做了一些优化工作,正式这些优化工作有时会迷惑编程人员,使string看起来难以琢磨,这篇文章分上下两章, ...
- vs断点未能绑定
原文链接:http://blog.csdn.net/pc0de/article/details/41790063 突然发现所有的c++项目在调试的时候加断点都会报错:”不能设置下面的断点.....断点 ...
- npm WARN saveError ENOENT: no such file or directory
转自树之名原文npm WARN saveError ENOENT: no such file or directory解决 我是在安装sequelize时出错的.提示的错误没有保存,类似于参考的文章中 ...
- Android 实现页面跳转并传递参数教程
首先我们来看一下实现的功能: 第二,我们看一下实现这个功能,总共会接触到哪些文件和代码. 1.实现本功能总共涉及如下6个文件 2.实现本功能,总共涉及如下6个文件中的如下代码: (1) 效果: ...
- iOS sqlite 使用事务操作数据库
业务层代码: //将解析的更新人员数据批量同步到数据库 +(void)operateCompUsers:(NSMutableArray*)operateCompUsers { sqliteHelper ...
- i386、i586、i686、noarch、x86_64
xxxxxxxxx.rpm <== RPM的格式,已经经过编译且包装完成的rpm文件. xxxxxx.src.rpm <== SRPM的格式,包含未编译的源代码信息. 例如rp-p ...
- Android项目更换开发环境时出现的 java.lang.VerifyError 异常解决办法
from://http://blog.csdn.net/wudiwo/article/details/7548451 项目是从同事的电脑上直接拷贝过来的,项目里面的jar包是在项目跟下libs里面存放 ...