当前位置:文档之家› Android介绍

Android介绍

• Android主要分成三部分:底层以Linux内核工 作为基础,由C语言开发,只提供基本功能; 中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软 件,包括通话程序,短信程序等,应用软件则 由各公司自行开发,以Java作为编写程序的一 部分。
P.5
P.11
P.12
• Android.13
• Windows下的应用开发环境主要要安装以下几个: – JDK 1.6 – Android SDK 1.6 – Eclipse IDE – Android SDK setup
P.14
• Android相关技术
» Vitual Machine » XML » SQLite » OpenGL » FreeType
• 尽管你可能没有直接使用过aapt工具, 但是build scripts和IDE插件会使用 这个工具打包apk文件构成一个Android 应用程序.
• 查看apk文件时建议最好直接用winrar等程序来更方便。
Tools-adb
P.23
• ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个 工具可以直接操作管理android模拟器或者真实的andriod设备,它的主要 功能有: – 运行设备的shell(命令行) – 管理模拟器或设备的端口映射 – 计算机和设备之间上传/下载文件 – 将本地apk软件安装至模拟器或android设备
P.21
• Android Tools
» Aapt » Adb » Ddms » Monkey » Mksdcard
Tools-aapt
P.22
• aapt即Android Asset Packaging Tool , 在SDK的tools/目录下. 该工具可 以查看, 创建, 更新ZIP格式的文档附件(zip, jar, apk). 也可将资源文件编 译成二进制文件.
Linux Kernel
P.6
• Android基于Linux 2.6提供核心系统服务,例如:安全、 内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体 硬件细节而为上层提供统一的服务。
• 分层的好处就是使用下层提供的服务而为上层提供统 一的服务,屏蔽本层及以下层的差异,当本层及以下 层发生了变化不会影响到上层。也就是说各层各尽其 职,各层提供固定的SAP(Service Access Point), 专业点可以说是高内聚、低耦合。
FreeType
P.20
• FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎, 它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反 走样位图的渲染。FreeType库是高度模块化的程序库,使用ANSI C开发。 因此,FreeType的用户可以灵活地对它进行裁剪。
• 所有的应用程序其实是一组服务和系统,包括:
• 视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程 序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器
• 内容提供者(Content Providers)——使应用程序能访问其他应用程 序(如通讯录)的数据,或共享自己的数据
• 大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于 寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更 多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以将 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。 由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以 ODEX结尾。
• Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存 管理。
Libraries
P.8
• Android包含一个C/C++库的集合,供Android系统的各个组件使用。这 些功能通过Android的应用程序框架(application framework)暴露给开 发者。下面列出一些核心库:
Applications
P.10
• Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、 日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编 程语言写的。更加丰富的应用程序有待我们去开发!
• 从上面我们知道Android的架构是分层的,非常清晰,分工很明确。 Android本身是一套软件堆叠(Software Stack),或称为「软件叠层架 构」,叠层主要分成三层:操作系统、中间件、应用程序。从上面我们 也看到了开源的力量,一个个熟悉的开源软件在这里贡献了自己的一份 力量。
• XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。 而HTML是用来定义数据的,重在数据的显示模式。
• XML与数据库不同,数据库提供了更强有力的数据存储和分析能力,例 如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。
SQLite
P.18
• SQLite,是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已 经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备 中,可能只需要几百K的内存就够了。 – 轻量级:使用SQLite只需要一个动态库就可以使用他的全部功能. – 独立性:SQLite数据库的核心引擎不需要依赖第三方软件. – 隔离性: SQLite数据库中所有的信息(比如表,图,触发器等)都包含在一 个文件夹内,方便管理和维护. – 跨平台: SQLite目前支持大部分操作系统. – 多语言接口: SQLite数据库支持多语言编程接口. – 安全性: SQLite数据库通过数据库级上的独占性和共享锁来实现独立 事务处理,这意味着多个进程可以在同一个时间从同一数据库读取数 据,但只能有一个可以写入数据.
• 系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux 设备
• 媒体库——基于PacketVideo的OpenCORE。这些库支持播放和录制许 多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG
• 界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三 维图形层
Dalvik VM&JAVA VM
P.16
• Dalvik是Google公司设计用于Android平台的Java虚拟机。它可以支持已转换 为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为 Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
Android Runtime
P.7
• Android包含一个核心库的集合,提供大部分在Java编程语言核 心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中 的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一 个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格 式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存 和处理器速度有限的系统。
• Dalvik 和标准Java 虚拟机(JVM)首要差别:Dalvik 基于寄存器,而 JVM 基于栈。 基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。
• Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个 Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的 时候所有程序都被关闭。 – 1:Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常 管理,以及垃圾回收等等重要功能。 – 2:Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一 个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。 – 3:不同于Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件 格式Dex – 4:dex文件格式可以减少整体文件尺寸,提高I/o操作的类查找速度。 – 5:odex是为了在运行过程中进一步提高性能,对dex文件的进一步优化。 – 6:所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的 依赖操作系统的线程调度和管理机制 – 7:有一个特殊的虚拟机进程Zygote,他是虚拟机实例的孵化器。它在系统启 动的时候就会产生,它会完成虚拟机的初始化,库的加载,预制类库和初始 化的操作。如果系统需要一个新的虚拟机实例,它会迅速复制自身,以最快 的数据提供给系统。对于一些只读的系统库,所有虚拟机实例都和Zygote共 享一块内存区域。
Application Framework
P.9
• 通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的 应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行 后台服务、设置闹钟、向状态栏添加通知等等,很多很多。
• 开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系 结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他 应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机 制允许用户替换组件。
• 资源管理器(Resource Manager)——提供访问非代码资源,如本地 化字符串、图形和布局文件
• 通知管理器(Notification Manager)——使所有的应用程序能够在状 态栏显示自定义警告
• 活动管理器(Activity Manager)——管理应用程序生命周期,提供通用 的导航回退功能
XML
P.17
• XML(Extensible Markup Language)即可扩展标记语言,它与HTML 一样,都是SGML(Standard Generalized Markup Language,标准通用标 记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处 理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存 储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方 式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML 极其简单易于掌握和使用。
相关主题