【Android源码 栏目提醒】:网学会员鉴于大家对Android源码 十分关注,论文会员在此为大家搜集整理了“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 ax /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_OUout/target/product/generic ./out/host/linux-x86/bin/emulator -shell 等着吧,跑起来了总结 这是我的读书笔记,到这里我们的概述也告一段落了,后续我们将继续按照
android 的framework 从下往上写一些东西,但愿我有时间。
深南大盗573832399 2010 白色情人节