Android 系统framework 概述【转载】

Android 系统framework 概述

一、android 是什么?

二、android 的开发工作

Android 的开发分为三个类型:移植开发移动设备系统;android 系统级开发和应用程序

开发。

1、移植开发移动设备系统

2、Android 系统级开发,指的是扩展android 的框架或者是修改bug,这方面比较少,

除非有些开发移动设备的厂商,比如做gps,可以往里面加入一些自己的特定系统东西,这

可能导致一些不兼容。当然也可能是简单的修复bug,详细的内容后面还有说。

3、开发应用程序,这应该是比较主流的开发,也就是给android 系统写应用程序。当然

我们这里主要是研究android 的framework 如何给这些应用程序提供服务的。

总结一下,我们可以把android 分为四个层次,从底层往上依次为:linux 内核、C/C++

库、java 框架和java 应用程序。移植开发移动设备涉及到linux 内核(包括其驱动);android

系统级开发涉及到C/C++库的开发及给上层java 框架;android 应用程序开发就是调用java

的框架写应用程序。

简单的从上到下,android 应用程序需要有java 框架支持,比如它要发送短信,就需要java

框架,java 框架其实就是将C/C++库包装成为了一个JNI,而实现具体的功能是C/C++库,

最后驱动硬件完成功能,这也就是linux 内核部分。

三、开发工作入门

根据上面所述,android 开发就分为居于sdk 开发和源代码开发。

1、SDK 开发,主要是应用程序开发,这里不做详细分析。

2、源代码的开发,涉及到的知识有linux 操作系统基础知识、android 底层库等知识,

后面将更加详细的介绍。

四、android 系统级开发概述

所谓framework,也就是系统级开发,这将是本文的重点,虽然android 的framework

开发比较少,但是对其了解后更有利于整体开发的进行,当然很多设备厂商还是非常需要这

些的。

1、android 系统架构

Linux 内核及驱动、C/C++框架、java 框架、java 应用程序。

1)、Linux 内核及驱动

其中linux 内核及驱动是内核层的(本人对linux 内核也有过痴迷的时候,就像现

在android 痴迷一样),系统总是需要操作系统的支持的,比如内存管理、进程管理、网

络协议栈等。

2)、android 的C/C++框架

系统C 库:用的是libc,没什么好说的,C 程序员都知道。

多媒体库

SurFace Manager:显示子系统的管理器

LibWebCore:web 浏览器引擎,支持android 浏览器

SGL:skia 图形库,底层的2D 图形引擎

3D 库:OpenGL

FreeType:字体显示

Android 的运行环境,这个也应该属于这个框架里面的,android 的虚拟机叫做

Dalvik,运行环境就是由这个虚拟机和基础的java 类库组成。

3)、android 应用框架

提供一系列的服务和系统,包括视图、内容提供器、资源管理器、通知管理器、活

动管理器。

视图非常丰富:list、grid、text box、button 等。

内容提供器是使得应用程序可以访问另一个程序的数据。

资源管理器是提供访问非代码的资源访问,如布局文件。

通知管理器,使得程序可以在状态栏中显示自定义的提示信息。

活动管理器,用来管理程序生命周期。

4)、android 应用程序

Android 所有的应用程序都是用java 写的,当然现在好像也支持一些脚本语言,如

ruby,但是不支持C 开发,所谓支持C 开发是指jni 的形式。

五、android 源码获取及编译

通过上面的讲解,相信大家对android 的framework 有了大致了解,绝对是大致,

否则后面的内容拿来做什么? :)

1、源码获取

建议比较新的系统,我使用的是fc12,当然可能缺点东西,到时候缺啥补啥吧。

A、安装repo

$ cd ~

$ mkdir bin

$ echo $PATH

确保PATH 中有bin 这个目录,如果没有?PATH=~/bin:$PATH

$ curl http://android.git.kernel.org/repo >~/bin/repo

$ chmod a+x ~/bin/repo

B、初始化repo 客户端

1、建一个目录用于放代码文件

$ mkdir mydroid

$ cd mydroid

2、

$ repo init -u

git://android.git.kernel.org/platform/manifest.git

C、获取文件

$ repo sync

2、编译代码

$ cd ~/mydroid

$ make

如果编译失败,一般都是缺了什么库之类的,yum 一把。

我编译的时候出现了一个现象是:

make: *** No rule to make target `development/data/etc/apns-conf_sdk.xml',

needed by `out/target/product/generic/system/etc/apns-conf.xml'. Stop

每次都是错误,最后我把developement 给删除了,重新git 了:

git clone git://android.git.kernel.org/platform/development

编译结果,所有的输出都在out 目录下。

Out 下有host 和target 目录,注意我们这里只是编译了framework,而kernel

部分没有,而且你也可以看到你git 下了的部分也没有kernel 这个文件夹,这是需

要你自己独立git 下来的。

我们这里可以使用默认使用内核镜像,

Prebuilt/android-arm/kernel/kernel-qemu

模拟器运行前配置环境变量:

Declare -x ANDROID_PRODUCT_OU="out/target/product/generic"

./out/host/linux-x86/bin/emulator -shell

等着吧,跑起来了

总结

这是我的读书笔记,到这里我们的概述也告一段落了,后续我们将继续按照android 的

framework 从下往上写一些东西,但愿我有时间。

深南大盗(573832399)

2010 白色情人节

转载于:https://www.cnblogs.com/nickLu/archive/2013/02/27/2935652.html

更多相关文章

  1. Google Android操作系统内核编译图文教程
  2. Android消息处理系统原理简要概述
  3. Android常用框架----网络请求系列框架
  4. android 图形系统
  5. Android学习之路(二)之 我的第一个Android应用程序
  6. 【开源项目3】Android快速开源框架--afinal

随机推荐

  1. 《Expert Android》关键点摘录之一:Explor
  2. How Android(安卓)Draws Views,Android如
  3. Android(安卓)Media Server - MediaPlaye
  4. Android开发-WebSocketWssDemo
  5. android学习小结4
  6. Android(安卓)Drawable工具类
  7. Android(安卓)获取手机的IMEI等设备信息
  8. android GPS JAVA应用程序编程-------获
  9. Android(安卓)终端上的开发工具
  10. Android(安卓)Bluetooth 文件接收路径修