Android framework浅析[转]

Android系统从底向上一共分了4层,每一层都把底层实现封装,并暴露调用接口给上一层。

1. Linux内核(Linux Kernel)

1)Android运行在linux kernel 2.6之上,但是把linux内受GNU协议约束的部分做了取代,这样在Android的程序可以用于商业目的。

2)Linux 内核是硬件和软件层之间的抽象层。

3)系统总是需要操作系统的支持的,比如内存管理、进程管理、网络协议栈等

2. 中间件(即android 的C/C++框架)

1)中间件包括两部分:核心库和运行时(libraries & Android runtime)

2)核心库包括,SurfaceManager 显示系统管理库,负责把2D或3D内容显示到屏幕;Media Framework 媒体库,负责支持图像,支持多种视频和音频的录制和回放;SQlite 数据库,一个功能强大的轻量级嵌入式关系数据库;WebKit 浏览器引擎等。

3)Dalvik虚拟机:区别于Java虚拟机的是,每一个Android 应用程序都在它自己的进程中运行,都有一个属于自己的Dalvik 虚拟机,这一点可以让系统在运行时可以达到优化,程序间的影响大大降低。Dalvik虚拟机并非运行Java字节码,而是运行自己的字节码。

其中

SurFace Manager:显示子系统的管理器
    LibWebCore:web 浏览器引擎,支持android 浏览器
    SGL:skia 图形库,底层的2D 图形引擎
   3D 库:OpenGL
   FreeType:字体显示

3. 应用程序框架(Application Framework)

1)丰富而又可扩展性的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids), 文本框(text boxes),按钮(buttons), 可嵌入的web 浏览器。

2)内容提供者(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。

3)资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件( layoutfiles )。

4)通知管理器(Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。

5)活动管理器(Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

4. 应用程序 (Applications)

Android 系统会内置一些应用程序包包括email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的,不支持C 开发,所谓支持C 开发是指jni 的形式

时间: 2024-11-07 02:21:24

Android framework浅析[转]的相关文章

android framework浅析_转

Android系统从底向上一共分了4层,每一层都把底层实现封装,并暴露调用接口给上一层. 1. Linux内核(Linux Kernel) 1)Android运行在linux kernel 2.6之上,但是把linux内受GNU协议约束的部分做了取代,这样在Android的程序可以用于商业目的. 2)Linux 内核是硬件和软件层之间的抽象层. 3)系统总是需要操作系统的支持的,比如内存管理.进程管理.网络协议栈等 2. 中间件(即android 的C/C++框架) 1)中间件包括两部分:核心库

Android Cursor浅析

1. 本文目的 Android ContentProvider提供了进程间数据交换的一种机制.而数据库的查询就是这种机制的应用.那么app通过Uri查询数据库而得到的Cursor究竟是个什么东西?为何可以为我们提供另一个进程的数据?本文以getContentResolver().query(--)函数为起点,全面分析Cursor家族关系类图,理清Cursor跨进程通信的机制. 1.1 客户端的Cursor对象 假设B进程中有一个ContentProvider,A进程通过Uri查询这个Conten

Android Framework 分析---消息机制Native层

在Android的消息机制中,不仅提供了供Application 开发使用的java的消息循环.其实java的机制最终还是靠native来实现的.在native不仅提供一套消息传递和处理的机制,还提供了自定义文件描述符的I/O时间的监听机制.下面我们从具体代码中分析一下. Native层的关键类: Looper.cpp.该类中提供了pollOnce 和wake的休眠和唤醒机制.同时在构造函数中也创建 管道 并加入epoll的机制中,来监听其状态变化. Looper::Looper(bool al

Android Framework 记录之二

原文地址:http://blog.csdn.net/banketree/article/details/24982021 接着上次的记录,续写. 23.services目录 文件 描述 class AlarmManagerService extends IAlarmManager.Stub { //定时管理服务 public class AppOpsService extends IAppOpsService.Stub {  // 程序选项服务 public class AppsLaunchFa

Android Framework 记录之一

简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了. 原文地址:http://blog.csdn.net/banketree/article/details/24718899 记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4.telphony目录 文件 描述 CellIdentityCdma //描述电信通信标识 CellIdentityGsm 描述移动通信标识 CellIdentityLte 描述

.Net程序员玩转Android系列之二~Android Framework概要(1)

从windows操作系统说起 人们总是喜欢从将陌生的事物和自己所了解的东西关联起来,以加深对未知事物的了解,这一讲我们从windows操作系统说起,逐步引领带大家走入android的世界.写任何程序都需要知道程序运行的原理和环境,就比如开发winform程序,你至少需要知道操作系统的原理,CLR运行时,了解一些常用的C/C++库.诚然,你不需要全部了解得很清楚也能写出很不错的应用程序,但是你了解的越清楚,钻研得越透彻,那么你越能开发出适合于你所在平台的.更优化的应用程序.譬如在windows操作

Android Framework 分析---PackageManager 分析

在windowphone,ios和android中到目前为止,还是android的市场份额最大.个人认为除了google开源外,广大开发者早就了android的霸主地位.各位兄弟姐妹开发出各种各样的apk,才组成android的广阔天下.本篇主要分析一下android系统是针对处理这些apk的,主要涉及到pm这块的代码.分析这种底层服务,最好从android的开启启动流程中开始分析.因为这样才能更清楚的了解服务的启动流程. 1.在SystemServer.java 中启动PM android 开

Android Annotations浅析

这阵子遇到了好多事情,挺久没来更新博文了,这两天在学这个开源框架Android Annotations,用起来感觉挺方便的, 相信用过Spring注解的孩子理解起来应该比较容易!就是配置起来比较吃力. 关于AndroidAnnotaions的介绍,网上已经很多了,我这里不再累赘. 1.AndroidAnnotations官网:http://androidannotations.org/(也许你需要翻墙) 2.eclipse中使用androidannotations的配置方法说明:https://

如何从C++代码直接访问android framework层的WifiService

说到底,Java层的service就是就C++层的binder的封装,所以从原理上来讲通过C++代码直接访问android framework层的service是完全可能的,这篇文章以访问WifiService为例,讲解如何去实现这个功能. 费话少说,直接上代码: WifiTest.cpp #include <sys/types.h> #include <unistd.h> #include <grp.h> #include <binder/IPCThreadSt