|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Model的改变最好通过Notification来传播之前吃过这样的亏最好不要用delegate模式)UIViewController你是不是曾但愿本人是罗丹?坐着用凿子砥砺着一块石头,将它塑形成你想要的模样。因为惧怕没法“砥砺”出有用的使用程序,支流程序员已经非常排挤资本严峻受限的挪动设备。不外那段光阴已一往不复返了。Android将可编程设备难以相信的使用范畴带到了你的门前。本书用31章涵盖了100多个主题。这一版先容了Android的2.3和Android3.0版,它们分离是针对挪动德律风战争板电脑而优化的Android版本。
<br>
第一章Android盘算平台简介(部分)
盘算正渐渐变得“团体化”,对盘算资本的会见愈来愈简单。很年夜水平上,手持设备已变化成盘算平台。曾多少时,手机不再仅仅用于通话,它们已可以承载数据和视频。挪动设备(手机或平板电脑)正成为十分壮大的通用盘算平台,必将成为新一代的PC。据展望,乃至华硕、惠普和戴尔等传统PC打造商都在企图推出基于Android的各类规格的设备。各类操纵体系之间、盘算平台之间、编程言语之间,和开辟框架之间的合作将转而在挪动设备上重演。
我们还展望,跟着愈来愈多的IT使用程序入手下手推出挪动版本,IT行业将掀起一场挪动编程高潮。为了匡助读者从这一趋向中受害,本书将先容怎样利用Java为运转在Google公司Android平台上的设备开辟使用程序。Android是一个面向挪动开辟战争板电脑开辟的开源平台。本章将概述Android及其SDK,冗长先容一些主要的包,引出每章将触及的主题,展现怎样使用Android源代码,偏重点先容一下为Android平台编程的优美远景。
Android令我们十分冲动,由于它是一个引进了浩瀚全新的框架计划形式的先辈平台(即便遭到挪动平台的限定)。
1.1面向新PC的全新平台
今朝挪动德律风等公用设备已跻身于主要的通用盘算平台行列,这关于开辟职员而言是件功德。从Android3.0入手下手,这一家属又添新成员:平板电脑这一新趋向使我们可经由过程通用盘算言语利用挪动设备,扩展了挪动使用程序的使用局限和市场份额。
<br>
手持设备是全新的PC
Android平台融进了面向手持设备的通用盘算理念。它是一个综合平台,包括一个基于Linux的操纵体系,用于办理设备、内存和历程。Android中的Java库涵盖了德律风、视频、语音、图形、毗连、UI编程和设备的其他很多方面。
<br>
Android软件栈的整体布局
只管针对挪动设备战争板设备而构建,但Android平台具有全功效桌面框架的一切特性。Google公司经由过程AndroidSDK(SoftwareDevelopmentKit,软件开辟工具包)将此框架供应给Java程序员。在利用AndroidSDK时,很难感觉到是在向挪动设备编写使用程序,由于你可以会见在桌面或服务器(包含干系数据库)上利用的年夜部分类库。
AndroidSDK撑持年夜多半JavaSE(JavaPlatform,StandardEdition),但其实不撑持AWT(AbstractWindowToolkit,笼统窗口工具包)和Swing。关于AWT和Swing,AndroidSDK具有本人的扩大古代UI框架(extensivemodernUIframework)。由于你在利用Java编写使用程序,以是能够想到,必要一个JVM(JavaVirtualMachin,Java假造机)来注释运转时Java字节码。JVM一般会供应需要的优化,以使Java可以到达与C和C++等编译言语相称的功能程度。Android供应了本人的经由优化的JVM来运转已编译的Java类文件,以克制手持设备在内存、处置器速率和功率等方面上的限定。这个假造机称为DalvikVM(1.3节将具体先容)。
Java编程言语的复杂性和人们对它的熟习,再加上Android丰厚的类库,使Android成了富有吸引力的编程平台。
1.2 Android的汗青
各类手机利用着分歧的操纵体系,好比SymbianOS、微软公司的WindowsMobile、MobileLinux、iPhoneOS(基于MacOSX)、Moblin(来自英特尔公司)和很多其他公用操纵体系。迄今为止,没有一个操纵体系成为现实尺度。可用于开辟挪动使用程序的API和情况具有诸多限定,仿佛远远掉队于桌面框架。Android平台具有开放、经济和代码开源的特性,更主要的是,它还包括一个高端、高度集成、分歧的开辟框架。
Google于2005年收买了新兴公司Android,入手下手开辟Android平台。Android公司的主要成员包AndyRubin、RichMiner、NickSears和ChrisWhite。
<br>
Android的开展过程
2007年岁尾,一些行业抢先企业环绕Android平台建立了开撒手机同盟(OpenHandsetAlliance,www.openhandsetalliance.com)。该同盟的一些主要成员以下。
- SprintNextel
- T-Mobile
- 摩托罗拉
- 三星
- 索尼爱立信
- 东芝
- 沃达丰
- Google
- 英特尔
- 德州仪器
停止2011年,此列表已增加了数倍(凌驾80个),你能够在开撒手机同盟网站上看到它。
从网站上能够懂得到,该同盟的一个方针是敏捷立异和更好地应对用户需求,它的第一个主要功效就是Android平台。Android旨在满意挪动运营商、手机打造商和使用程序开辟职员的需求。同盟成员已答应经由过程开源的Apache允许证2.0版公布主要的常识产权。
2007年11月,AndroidSDK初次公布“预览”版。2008年9月,T-Mobile公布了T-MobileG1,这是第一部基于Android平台的智妙手机。几天后,Google公司公布了AndroidSDKReleaseCandidate1.0。2008年10月,Google根据Apache的开源允许公然了Android平台的源代码。2010岁暮,Google针对智能德律风公布了AndroidSDK2.3,其代号为Gingerbread,该版本于2011年3月晋级到了2.3.3版。2011年岁首,又针对平板电脑公布了一个优化过的Android版本Android3.0,其代号为Honeycomb。摩托罗拉公司的XOOM是利用此操纵体系版本的初期平板电脑之一。
在Android公布时,它的一个主要架构方针是使使用程序可以相互交互,重用相互的组件。这类重用不但合用于服务(service),还合用于数据和用户界面(UI)。终极,Android平台的浩瀚架构功效使这一开放性得以完成。
因为功效完美成熟,Android也吸引了一些初期跟随者使用Web资本所供应的云盘算模子,利用手机本身的当地数据存储加强云盘算体验。Android敌手机上的干系数据库的撑持也是吸引初期接纳者的一个主要要素。
1.0和1.1版(2008年公布)的Android不撑持软键盘,设备必要装备物理键盘。2009年4月公布的1.5SDK办理了这个成绩,该版本还包括很多其他功效,好比初级媒体录制功效、部件和举动文件夹(livefolder)。
2009年9月公布了Android1.6,在一个月内又公布了Android2.0,这无力地推进了2009年圣诞节浩瀚Android设备的上市。这个版本引进了初级搜刮功效和文本到语音的转换功效。
借助对HTML5的撑持,Android2.0还大概令人使用HTML完成一些风趣的功效。接洽人API经由了周全改善。增加了对Flash的撑持。天天城市出生愈来愈多基于Android的使用程序和新范例的自力在线使用程序商铺。如今也能够买到基于Android的备受等候的平板电脑。
Android2.3包含以下一些主要的功效:由办理员远程擦除平安数据、在光照不敷前提下利用拍照机和视频、WiFi热门、严重的功能改良、改善的蓝牙功效、可选择将使用程序安装在SD卡上、OpenGLES2.0撑持、备份改善、搜刮有用性改善、针对信誉卡处置的近场通讯撑持、明显改善的举措和传感器撑持(相似于Wii)、视频谈天,和改善的Market。
Android的最新成员3.0版次要针对基于平板电脑的设备和壮大很多的双核处置器,好比NvidiaTegra2。此版本的次要功效包含撑持利用较年夜的屏幕,引进了一个名为“碎片”的主要的新观点。这个观点浸透到了3.0版的体验中。Android3.0还引进了加倍相似于桌面的功效,好比ActionBar和拖放。主屏幕部件失掉了明显改善。如今有更多UI控件可用。在3D范畴,OpenGL利用Renderscript得以改善,为ES2.0供应了进一步的增补。它关于平板电脑而言是一项冲动民气的功效。
1.3 DalvikVM分析
作为Android平台的一部分,Google公司花了大批工夫思索针对低功耗手持设备的优化计划。与桌面设备比拟,手持设备在内存和速率方面掉队8~10年。它们的盘算才能也无限。了局,手机的功能需求变得很严厉,请求手机计划职员优化一切要素。假如检察Android中的包列表,你将会看到它们的功效周全而丰厚。
这些成绩使Google公司在很多方面从头审阅尺度JVM完成。(DanBornstein对Google公司的这个JVM完成作出了主要奉献,他编写了DalvikVM,Dalvik是冰岛一个小镇的称号。)起首,DalvikVM猎取天生的Java类文件,将它们组合为一个或多个Dalvik可实行文件(.dex)。它重用多个类文件中的反复信息,与未紧缩的传统.jar文件比拟,无效地将空间需求削减了一半。
其次,Google公司在DalvikVM中对渣滓搜集举行了调优,但它在初期版本当选择了删除JIT(Just-In-Time,立即)编译器。Android2.3增加了JIT。呈报称这可在各类场合供应快2到5倍的原始功能,将通用使用程序的功能提拔10%~20%。
最初,DalvikVM利用了一种分歧的汇编代码天生办法,它利用存放器而不是栈作为次要的数据存储单位。Google公司但愿如许能将指令削减到30%。应该指出,接纳DalvikVM的一个了局是,Android中终极的可实行程序代码不是基于Java字节码,而是基于.dex文件。这意味着没法间接实行Java字节码,必需起首失掉Java类文件,然后将它们转换为可链接的.dex文件。
这类对功能的狂热寻求还扩大到了AndroidSDK的其他部分。比方,AndroidSDK大批利用XML来界说UI结构。但是,一切XML数据必需编译为二进制文件,然后才干将这些文件存储在设备上。Android供应了一些专门的机制来利用XML数据。
1.4 了解Android软件栈
到今朝为止,我们先容了Android的汗青和它的优化功效,包含DalvikVM,还提到了可用的Java软件栈。本节将先容与Android开辟有关的内容。下图是入手下手此会商的一个不错的起点。
<br>
AndroidSDK软件栈具体布局
Android平台的中心是Linux内核,它卖力设备驱动程序、资本会见、电源办理和完成其他操纵体系的职责。供应的设备驱动程序包含显现器、拍照机、键盘、WiFi、闪存、音频和IPC(Inter-ProcessCommunication,历程间通讯)。只管中心是Linux,但Android设备(好比MotorolaDroid)上的尽年夜部分使用程序都是利用Java开辟,经由过程DalvikVM运转的。
我们看一下另外一层,内核之上是很多C/C++库,好比OpenGL、WebKit、FreeType、SSL(SecureSocketsLayer,平安套接字层)、libc(C运转时库)、SQLite和媒体。基于BSD(BerkeleySoftwareDistribution,伯克利软件套件)的体系C库针对嵌进式Linux设备举行了调优(巨细约为原始巨细的一半)。媒体库基于PacketVideo(www.packetvideo.com/)的OpenCORE。这些库卖力录制和播放音频和视频格局的内容。一个名为SurfaceManager的库把持对显现体系的会见,撑持2D和3D。在新版本中大概增加更多如许的当地库。
WebKit库卖力扫瞄器撑持,WebKit也是Google公司的Chrome和苹果公司的Safari利用的库。FreeType库卖力字体撑持。SQLite(www.sqlite.org/)是一个可在设备本身上利用的干系数据库。SQLite也是干系数据库的一项自力的开源功效,没有间接绑定到Android。合用于SQLite的工具也可用于Android数据库。
年夜多半使用程序框架都经由过程DalvikVM会见这些中心库,DalvikVM就像Android平台的出口。后面几节已提到,Dalvik经由了优化,能够运转多个VM实例。会见这些中心库时,每一个Java使用程序城市取得本人的VM实例。
AndroidJavaAPI的次要库包含德律风、资本、地位、UI、ContentProvider(数据)和保证理器(安装、平安等)。程序员利用此JavaAPI开辟终极用户使用程序。设备上的一些终极用户使用程序示例包含Home、Contacts、Phone、Browser等。
Android还撑持Google公司一个名为Skia的自界说2D图形库,这个库是利用C和C++编写的。Skia也是GoogleChrome扫瞄器的中心组件。但是,Android中的3DAPI基于来自Khronos小组(www.khronos.org)的一个OpenGLES完成。OpenGLES包括OpenGL中面向嵌进式体系的子集。
从媒体角度讲,Android平台撑持最多见的音频、视频和图象格局。从无线角度讲,Android的API可撑持蓝牙、EDGE、3G、WiFi和GSM(GlobalSystemforMobileCommunication,环球挪动通讯体系)德律风而详细则取决于设备硬件。
1.5 利用AndroidSDK开辟终极用户使用程序
本节将先容用于在Android上开辟终极用户使用程序的初级AndroidJavaAPI。我们将复杂先容Android摹拟器、Android基本组件、UI编程、服务、媒体、德律风、动画和OpenGL。我们还将展现一些代码片断。
1.5.1 Android摹拟器
AndroidSDK包括一个Eclipse插件,名为ADT(AndroidDevelopmentTools,Android开辟工具)。这个IDE(IntegratedDevelopmentEnvironment,集成开辟情况)工具用于开辟、调试和测试Java使用程序。(第2章将先容ADT。)也能够独自利用AndroidSDK,利用命令行工具取代ADT。两种办法都撑持利用摹拟器来运转、调试和测试使用程序。乃至90%的使用程序开辟事情都不必要实在设备。全功效的Android摹拟器可以摹拟年夜部分的设备功效。摹拟器不克不及摹拟USB毗连、拍照机与视频收罗、耳机、电池、蓝牙、WiFi、NFC和OpenGLES2.0。
Android摹拟器利用一种名为QEMU(http://bellard.org/qemu/)的开源“处置器摹拟器”手艺来完成它的事情,此手艺由FabriceBellard开辟。这项手艺还撑持在一个操纵体系上摹拟另外一个操纵体系,而不必思索接纳了何种处置器。QEMU撑持在CPU级别长进行摹拟。
在Android摹拟器中,处置器基于ARM(AdvancedRISCMachine,初级精简指令集呆板)架构。ARM是一种基于RISC(ReducedInstructionSetComputer,精减指令集盘算机)的32位微处置器架构,其计划上的复杂性和较高的速率经由过程指令会合精减的指令来完成。摹拟器在此摹拟处置器上运转Linux的Android版本。
ARM被普遍使用于手持设备和其他嵌进式电子设备中,低功耗对这些设备十分主要。挪动市场也普遍利用了基于此架构的处置器。
能够在AndroidSDK文档中找到关于该摹拟器的更多具体信息:http://developer.android.com/guide/developing/tools/emulator.html。
1.5.2 AndroidUI
Android利用的UI框架相似于其他基于桌面的全功效UI框架。实践上,它在实质上加倍先辈,更具异步特性。假如将基于C的传统MicrosoftWindowsAPI看作第一代UI框架,将基于C++的MFC(MicrosoftFoundationClasses,Microsoft基本类)看作第二代。基于Java的SwingUI框架能够看作第三代,它比MFC具有更高的计划天真性。AndroidUI、JavaFX、MicrosoftSilverlight和MozillaXUL(XMLUserInterfaceLanguage,XML用户界面言语)都是第四代UI框架的新成员,它们的UI是声明性的,具有自力的主题。
申明在Android中,即便编程的方针设备是手持设备,也会利用一种时髦的用户界面形式。
在AndroidUI中编程触及在XML文件中声明界面。然后将这些XML视图(view)界说作为窗口加载到UI使用程序中。乃至使用程序中的菜单也是从XML文件加载的。Android中的屏幕或窗口一般称为举动(activity),包括用户完成一个逻辑举措单位所需的多个View。View是Android中的基础UI构建块,能够对它们进一步组合构成名为视图组的复合视图。View在外部利用我们熟习的画布、画图和用户交互观点。在Android中,承载这些复合视图(包含View和视图组)的Activity是逻辑上可交换的UI组件。Android3.0引进了另外一个名为碎片的UI观点,同意开辟职员将视图和功效在平板电脑上分块显现。平板电脑为多窗格举动供应了充分的屏幕空间,而碎片供应了这些窗格的笼统。
Android框架的一个主要观点是Activity窗口的性命周期办理。Android接纳一些协定在用户埋没、复原、中断和封闭Activity窗口时办理形态。第2章将先容这些基础的头脑,还将先容怎样设置Android开辟情况。
本文节选自《精晓Android3》,作者(印)克曼特内尼(Komatineni,S.),(美)哈希米(Hashimi,S.),(美)麦克莱恩(MacLean,D.),译者杨越,由国民邮电出书社刊行。
我当时刚学iOS开发的时候一样的感觉总想知道原理内部怎么回事感觉在像在雾里但是iOS开发就是这样他是封闭的本身就是在雾里... |
|