android平台
Android系统介绍
Android系统的底层建立在Linux系统之上,该平台由Linux内核层、系统运行库层、应用框架层及应用层四层组成,它采用一种被称为软件叠层(Software Stack)的方式进行构建。这各软件叠层结构使得层与层之间相互分离,明确各层的分工。这种分工保证了层与层之间的低耦合,当下层的层内或层下发生变化时,上层应用程序无须任何改变。以下就对不同层分别加以介绍:
Linux内核层
Android系统建立在Linux 2.6之上,这一层为Android设备的各种硬件提供了底层的驱动(Linux内核提供了安全性、内存管理、进程管理、网络协议和驱动模型等核心系统服务)。
Linux内核也是系统硬件和软件叠层之间的抽象层。
系统运行库层
这一层通过一些C/C++库来为Android系统提供了主要的特性支持。此层中还有Android运行时库,它主要提供一些核心库,来允许开发者使用Java语言来编写Android应用。因此可以将此层看作由提供Android系统特性的函数库和Android运行时库两部分组成,以下就对其进行分别介绍:
提供Android系统特性的函数库
Android包含一组C/C++库,这些库为Android系统提供了主要的特性支持。一般说来,Android应用开发者不能直接调用这套C/C++库集,但可以通过其上的应用框架层来调用这些库。
常用的一些核心库有:系统C库、媒体库、Surface Manager、LibWebCore、SGL、3D libraries、FreeType及sqlite等。
Android运行时库
Android运行时库由Android核心库集和Dalvik虚拟机两部分组成。Android核心库集,能够允许开发者使用Java语言来编写Android应用;而Dalvik虚拟机则使得每一个Android应用都能运行在独立的进程中,并且拥有一个自己的Dalvik虚拟机实例。
Android虚拟机与java虚拟机
- Dalvik并未遵守JVM规范,两者也不兼容。
- JVM虚拟机运行的是Java字节码(通常是.class文件),但Dalvik运行的是其专有的dex(Dalvik Executable)文件。
- JVM直接从.class文件或JAR包中加载字节码然后运行,而Dalvik则需要通过DX工具将应用程序的所有.class文件编译成.dex文件,然后再运行该.dex文件。
Dalvik虚拟机依赖于Linux内核提供的核心功能,如线程和底层内存管理。Dalvik虚拟机非常适合在移动终端上使用,相对于在PC或服务器上运行的虚拟机而言,Dalvik虚拟机不需要很快的cpu计算速度和大量的内存空间,它主要有如下两个特点:
- 运行专有的.dex文件。专有的.dex文件减少了.class文件中的冗余信息,而且会把所有.class文件整合到一个文件中,从而提高运行性能;而且DX工具还会对.dex文件进行一些性能的优化。
- 基于寄存器实现。大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。一般来说,基于寄存器的虚拟机具有更好的性能表现,但在硬件通用上略差。
应用框架层
Android应用程序框架层提供了大量的API供开发者使用,在开发Android应用程序时,就是面向底层的应用程序框架进行的。
应用程序框架层除可作为应用程序开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可发布它的功能模块——只要发布时遵守了框架的约定,那么其它应用程序也可使用这个功能模块。
应用层
所有安装在手机上的应用程序都属于这一层。
Android系统将会包含系列的核心应用程序,这些程序包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人等。这些应用程序都是使用Java编写的。
参考《疯狂Android讲义》《第一行代码——Android》
相关阅读
Android中文语音合成(TTS)各家引擎对比Yao.GUET 2012-02-03,转载请注明出处:http://blog.csdn.net/Yao_GUETAndroid系统从1.6版本开
Android自定义View:MeasureSpec的真正意义与View大小控
自定义View是Android开发中最普通的需求,灵活控制View的尺寸是开发者面临的第一个问题,比如,为什么明明使用的是WRAP_CONTENT却跟MAT
总结的反编译流程,查看如下流程: 工具介绍来看看呗(3个) apktool 将apk安装包解析成能看懂的资源文件dex2jar 将classes.dex打成jar
1、四大组件是什么? Activity【活动】:用于表现功能。 Service【服务】:后台运行服务,不提供界面呈现。 BroadcastReceiver【广播
前言 本篇文章摘抄于网络,放在自己的博客只是为了方便查看和记忆。现在CSDN已经有手