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开发,主要是应用程序开发,这里不做详细
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
。
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
等着吧,跑起来了
总结
这是我的读
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
笔记,到这里我们的概述也告一段落了,后续我们将继续按照 android的
framework从下往上写一些东西,但愿我有时间。
深南大盗(573832399)
2010白色情人节