第一天(20160131

1 Android应用与开发环境

一、本章知识点概述:

1、搭建和使用Android应用开发环境,包括安装Android SDKAndroid开发工具;也包括如何使用Android提供的ADBDDMSAAPTDX等工具。

二、Android平台架构及特性

Android系统的底层建立在Linux系统之上,该平台由操作系统、中间件、用户界面和应用软件4层组成,它采用一种被称为软件叠层(Software Stack)的方式进行构建。这种软件叠层结构使得层与层之间相互分离,明确各层的分工。这种分工保证了层与层之间的低耦合,当下层的层内或层下发生改变时,上层应用无须任何改变。

1.1显示了Android系统的体系结构。


从图中可以看出,Android系统主要有5部分组成,下面分别对这5部分进行简单介绍。

1、应用程序层

Android系统将会包含一系列的核心应用程序(也就是Android系统自带的一些程序),包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人等。这些应用程序都是用Java编写的。Android应用程序开发也主要是开发这些应用程序。

2、应用程序框架

当我们开发Android应用程序时,就是面向应用程序框架进行的。Android系统上的应用程序都是完全平等的,不管是Android系统自带的应用程序,还是普通开发者开发的程序,都可以访问Android体统的API框架。

Android应用程序框架提供了大量API供开发者使用。

应用程序框架除可作为应用程序开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可发布它的功能模块—只要发布时遵守了框架的约定,那么其他应用程序也可以使用这个功能模块。

隐藏在每个应用后面的是一系列的服务和系统, 其中包括;

  * 丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons)甚至可嵌入的web浏览器。

  * 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库)或者共享它们自己的数据

  * 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件( layout files )

  * 通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。

  * 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

3、函数库和Android运行时

1)、函数库

Android包含一套被不同组件所使用的C/C++库的集合。一般来说,Android应用开发者不能直接调用这套C/C++库集,但可以通过它上面的应用程序框架来调用这些库。

以下是一些核心库:

  * 系统 C - 一个从 BSD 继承来的标准 C 系统函数库( libc )它是专门为基于 embedded linux 的设备定制的。

  * 媒体库 - 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG

  * Surface Manager - 对显示子系统的管理,并且为多个应用程序提供了2D3D图层的无缝融合。

  * LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。

  * SGL - 底层的2D图形引擎

  * 3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。

  * FreeType -位图(bitmap)和矢量(vector)字体显示。

  * SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

2)、Android运行时

Android运行时由两部分组成:Android核心库集和Dalvik虚拟机。核心库集提供了Java语言核心库所能使用绝大部分功能,而虚拟机则负责运行Android应用程序。

每个Android运用程序都运行在单独的Dalvik虚拟机内(即没个 Android应用程序对应一个Dalvik进程),Dalvik专门针对同时高效地运行多个虚拟机进行了优化,因此Android系统可方便的实现对应用程序进行隔离。(每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK "dx" 工具转化成.dex格式由虚拟机执行。

由于Android应用程序的编程语言是Java,因此有些人会把Dalvik虚拟机和JVM搞混,但实际上二者存在区别:Dalvik并未完全遵守JVM规范.两者也不兼容。实际上JVM虚拟机运行的是Java字节码(通常就是.class文件),但Dalvik运行的是其专有的dex(Dalvik Executable)文件。JVM直接从.class文件或JAR包中加载字节码然后运行;而Dalvik则无法直接从.class文件或JAR包中加载字节码,它需要通过DX工具将应用程序的所有.class文件编译成.dex文件,Dalvik则运行该.dex文件。

Dalvik虚拟机非常适合在移动终端上使用,相对于在Pc或服务器上运行的虚拟机而言,

Dalvik虚拟机不需要很快的CPU计算速度和大量的内存空间。它主要有如下两个特点。

Ø 运行专有的.dex文件。专有的dex文件减少了.class文件中的冗余信息,而且会把所有.class文件整合到一个文件中,从而提高运行性能;而且DX工具还会对.dex文件进行一些性能的优化。

Ø 基于寄存器实现。大多数虚拟机(包括JVM)都是基于栈的,而Dalvik虚拟机则是基于寄存器的。一般来说,基于寄存器的虚拟机具有更好的性能表现,但在硬件通用性上略差。

Dalvik虚拟机依赖于Linux内核提供的核心功能,如线程和底层内存管理。

4、Linux内核

Android系统建立在Linux 26之上。Linux内核提供了安全性、内存管理、进程管理、

网络协议栈和驱动模型等核心系统服务。除此之外,Linux内核也是系统硬件和软件叠层之

问的抽象层。


更多相关文章

  1. Android(安卓)使用NDK编译sipdroid Library
  2. X-Ray检测Android设备Root漏洞过程分析
  3. Android(安卓)Asynchronous Http Client-Android异步网络请求客
  4. android sdk, adt编译问题
  5. Android中如何实现圆形按钮的颜色变化
  6. 【Android浏览器插件开发准备工作之NPAPI】使用Visual Studio 20
  7. 破解Xamarin
  8. Android中使用PreferenceActivity创建菜单
  9. Android(安卓)make脚本简记

随机推荐

  1. 看了这篇文章、我一礼拜学会了Java
  2. 课程学习记录之python简单库和正则
  3. 硬盘出现“此卷不包含可识别的文件系统”
  4. 0407作业-留言板、字符串和数组的常用方
  5. 使用shell脚本监控Linux主机
  6. 区块链在数据流通中的应用
  7. MySQL提升课程 全面讲解MySQL架构设计
  8. Java过滤任意(script,html,style)标签符,
  9. 主从复制之binlog_format
  10. 怎样才能做好技术团队管理