Android 笔记(一)

BF,技术帖,Android 2016-05-17

一.什么是Android
Android是一种基于Linux内核的、代码开源的且可定制的操作系统,其系统结构如下:
Android结构.png

Android系统结构的说明:
通过上图我们可以发现Android系统的结构一共分了4层:从下到上依次是最下面的Linux内核层、系统库与Android运行时环境层(中间层)、应用程序框架层和最上面的应用程序层。

Linux内核层: Android以Linux2.6作为其操作系统内核,该层主要用于驱动Android操作系统的硬件和软件: 1、Display Driver——显卡驱动,用于驱动Android系统的GPU(Graphics Processing Unit,即图形处理器); 2、Camera Driver——摄像头驱动,用于驱动Android系统的摄像头; 3、Bluetooth Driver——蓝牙驱动,用于驱动Android系统的蓝牙功能; 4、Flash Memory Driver——闪存驱动,用于驱动Android系统闪存卡(比如CF卡、SD卡、TF卡或记忆棒等闪存卡,Android系统中表现为SD卡); 5、Binder(IPC) Driver——进程间通信驱动。IPC即Inter-Process Communication(驱动),在Linux内核中使用C语言实现了多种进程间通信的方法,比如半双工Unix管道方法、命名管道(name pipe)方法、消息队列(message queue)方法、信号(signal)方法和共享内存share memory方法等方法,Android操作系统的Linux内核使用了一种新的方法,即Binder方法。用于驱动Android操作系统进程间的通信; 6、USB Driver——Universal Serial Bus(通用串行总线)驱动,用于驱动Android系统和第三方设备(如移动硬盘)建立连接; 7、Keypad Driver——键盘驱动,用于驱动Android系统的键盘; 8、WiFi Driver——WiFi驱动,用于驱动Android系统的WIFi; 9、Audio Driver——音频驱动,用于驱动Android系统听筒和话筒; 10、Power Management——电源管理,用于Android系统与电池间的驱动;

系统库与Android运行时环境层(中间层):
该层分为系统库和Android运行时环境两部分:
系统库:该库基本使用C和C++语言实现,分为九部分:
1、Surface Manager——界面管理,当系统同时运行多个应用程序时,Surface Manager负责管理应用程序界面显示与存取操作间的互动,同时也负责将2D绘图与3D绘图进行显示上的合成;
2、Media Framework——多媒体框架,该框架是一个开源的、用C++语言实现的并基于PackerVideo的OpenCore(Android的多媒体核心),从功能上该框架分为两部分:①PVPlayer——各种音频(Audio)、视频(Video)流的回放(Play Back);②PVAuthor——各种音频(Audio)、视频(Video)流的以及静态图像捕获(或称为记录);
3、SQLite——一款轻量级的、采用C语言编写的且功能强大的开源嵌入式关系数据库;
4、OpenGL|ES——即Open Graphics Library for Embedded Systems,它是OpenGL三维图形API的子集;OpenGL是一个开放的用于绘制2D和3D图形图像的库;
5、FreeType——渲染位图(bitmap)及矢量(vector)字体
6、WebKit——一个开源的浏览器引擎,包含WebCore排版引擎和JSCore引擎;
7、SGL——2D图形引擎库,提供对2D图像的解析、组合等功能;
8、SSL——即Secure Socket Layer(安全套接层),位于TCP/IP协议与各种应用层协议之间,用于保障在Internet上数据传输安全;
9、libc——一个系统最底层的C语言标准库,该通过Linux系统来调用;
Android运行时环境:该运行时环境部分依赖于系统库,它分为Core Libraries(核心库)和Dalvik Virtual Machine(Dalvik虚拟机)两部分:
1、Core Libraries(核心库):该库不仅包括了Java语言所需要的大多数API,也包括了Android的核心库,比如:
a、Android.app——提供高层的程序模型和基本的运行环境。
b、Android.content——包含对各种设备上的数据进行访问和发布。
c、Android.database——通过内容提供者浏览和操作数据库。
d、Android.graphics——底层的图形库,包括画布、颜色过滤、点、矩形等,可以将它们直接绘制到屏幕上。
e、Android.location——定位和相关服务的类。
f、Android.media——提供一些管理多种音频、视频和媒体的接口。
g、Android.net——提供帮助网络访问的类,其功能比java.net.*接口更强大。
h、Android.os——提供了系统服务、消息传输和IPC(Inter-Process Communication,进程间通信 )机制。
i、Android.opengl——提供OpenGL的工具。
j、Android.provider——提供访问Android内容提供者的类。
k、Android.telephony——提供与拨打电话相关的API。
l、Android.view——提供基础的用户界面接口框架。
m、Android.util——提供工具性的方法,例如时间日期的操作。
n、Android.webkit——提供默认浏览器操作接口。
o、Android.widget——提供各种UI元素(大部分是可见的),应用于应用程序的布局中
2、Dalvik Virtual Machine(Dalvik虚拟机):一种基于寄存器的Java虚拟机(JVM是一个基于栈的Java虚拟机)。Dalvik虚拟机主要是完成对生命周期的管理(比如Activity的生命周期)、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。在Android操作系统中,每个Java程序都运行在Dalvik虚拟机上,该虚拟机只能执行扩展名为.dex(Dalvik Exceutable)的文件(.dex的文件生成过程:将一个或多个Java文件编译成一个或多个字节码文件(即.class文件),再通过SDK中的dx工具将应用程序中所有的字节码文件转换成一个名为classes.dex的文件,Dalvik虚拟机会从该文件中读取指令和数据。这与JVM不同:将一个或多个Java文件编译成一个或多个字节码文件(即.class文件),然后打包到jar文件,最后Java虚拟机会从相应的字节码文件和jar文件中获取相应的字节码;
应用程序框架层
我们开发的应用程序大多运行在该层,该层共分为10个部分:
1、Activity Manager——活动管理器,与系统中所有运行着的Activity交互提供了接口,主要的接口围绕着运行中的进程信息,任务信息,服务信息等;
2、Window Manager——窗口管理器,提供了获取窗口宽高等信息的方法;
3、Content Providers——内容提供者,提供了访问不同应用程序数据或者共享自己的数据的方法;
4、View System——视图系统,用于管理Android应用的视图;
5、Notification Manager——通知管理器,为管理Android系统接受的通知提供了方法;
6、Package Manager——包管理器,为管理Android应用程序的包提供了方法;
7、Telephony Manager——电话管理器,为访问与手机通讯相关的状态(包括手机SIM的状态、短信状态和网络状态)和信息(包括手机用户的信息)提供了方法;
8、Resource Manager——资源管理器,用于访问Android系统工程中的资源文件(比如字符串xml文件中的字符、图片文件夹中的图片、布局文件件中的布局xml文件等等);
9、Location Manager——定位管理器,为获取当前设备位置、追踪设备的移动路线和设定敏感区域提供了接口;
10、XMPP Service——XMPP协议服务,为在Android应用程序中应用XMPP协议提供了可能;
应用程序层:
该层提供了一些常用的应用程序,如Home(主屏幕)、Phone(电话)、Browser(浏览器)和Contact(联系人)等。我们开发的应用程序与这些已有的应用程序是“平等”的。
通过分析Android系统结构,可以看出他的层次非常的分明,为我们从事的Android开发方向指明了方向。
二.什么是Android开发
通常说的Android开发是指能够安装在Android操作系统中且能够运行的应用程序开发,又称为Android嵌入式开发。 Windows操作系统中的应用程序是使用C或C++语言开发的扩展名为.exe的可执行性文件,与此类似:Android操作系统中的应用程序是使用Java语言开发的扩展名为.apk的文件。


本文由 BF 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论

bst g22 jinniu lilai opebet orange88 vinbet xbet yuebo zunlong shijiebei bet007 hg0088 ju111 letiantang m88 mayaba qg777 qianyiguoji sbf777 tengbohui tlc ule weilianxier waiweitouzhu xingfayule xinhaotiandi yinheyule youfayule zhongying 2018shijiebei w88 18luck 188bet beplay manbet 12bet 95zz shenbo weide1946 ca88 88bifa aomenxinpujing betway bodog bt365 bwin tongbao vwin weinisiren 88jt fenghuangyule hongyunguoji 918botiantang huanyayule jianada28 jixiangfang libo long8 hongzuyishi zuqiutouzhu