GoogleAndroid移动软件开发技术basedonAndroid授课计划Android平台概述搭建Android开发环境第一个Android应用程序Android用户界面设计(View、Layout)Activity、IntentAndroid中的数据存取与共享多线程及消息处理网络通信Android的多媒体应用获取Android资料的途径下载sdk等相关软件查看文档、在线帮助开发社区国内需要代理才能访问news、sdk下载开发FAQ、源码下载、移植GoogleAndroidAndroid平台概述aboutandroidAndroid起源Android是一家成立于2003年的美国公司,主要业务是手机软件和手机操作系统,后来被谷歌公司收购。最初的目标是利用Android创建一个能够与PC联网的“智能相机”世界被谷歌公司收购,并与开放手机联盟共同开发名为Android的开放源代码的移动系统(是第一个完整的、开放的、免费的智能移动开发平台)开放手机联盟开放手机联盟(OpenHandsetAlliance):美国Google公司于2007年11月5日发起组建的一个全球性的联盟组织。网址:联盟支持Google可能发布的手机操作系统或者应用软件,共同开发名为Android的开放源代码的移动系统开放手机联盟成员已达80家,包括五大类:手机制造商、手机芯片商移动运营商软件开发商、软件服务商联盟创始成员Aplix、Ascender、Audience、Broadcom、中国移动、eBay、Esmertec、谷歌、宏达电、英特尔、KDDI、LivingImage、LG、Marvell、摩托罗拉、NMS、NTTDoCoMo、Nuance、Nvidia、PacketVideo、高通、三星、SiRF、SkyPop、SonicNetwork、SprintNextel、Synaptics、TAT、意大利电信、西班牙电信、德州仪器、T-Mobile和WindRiverGooglePhoneOHA与AndroidOHA是一个软硬件开发者组织,包括Google,NTTDoCoMo,SprintNextel,andHTC…目标:加速智能移动设备的发展提供用户更多更好更便宜的服务由OHA开发的Android™,是第一个完整的、开放的、免费的智能移动开发平台。AndroidAndroid软件系列包括操作系统、中间件和一些关键应用基于Linux2.6内核,使用Java开发应用程序AndroidSDK提供多种开发所必要的工具与APIAndroidSDK发展过程AndroidSDK发展过程特点1应用框架可以重复使用,其组件也可以更换Dalvik虚拟机针对移动设备进行了优化优化的图形能力支持2D/3D图形(OpenGLES1.0)集成了基于开源WebKit引掣的浏览器采用SQLite实现结构化数据存储特点2多媒体支持多种音频、视频格式GSMTelephony(hardwaredependent)支持蓝牙Bluetooth,3G和WiFi支持照相机、GPS、指南针和加速度仪等传感器硬件丰富的开发环境,包括模拟机、调试工具、内存运行检测,以及为EclipseIDE所写的插件优势:开放性源代码完全开放,便于开发人员更清楚的把握实现细节,便于提高开发人员的技术水平,有利于开发出更具差异性的应用开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益之处在于丰富的软件资源开放的平台也会带来更多竞争,如此一来,消费者将可以用更低的价位购得手机优势:挣脱运营商的束缚在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制自从iPhone、GPhone上市,用户可以更加方便地连接网络,运营商的制约减少随着2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈优势:丰富的硬件选择由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容例如:从诺基亚Symbian手机改用苹果iPhone,此时还可将Symbian中优秀的软件带到iPhone上使用,联系人等资料更是可以方便地转移优势:不受限制的开发商采用了对有限内存、电池和CPU优化过的Dalvik虚拟机,Android的运行速度比想象的要快很多Android的源代码遵循ApacheV2软件许可,而不是通常的GPLv2许可,更有利于商业开发Android平台提供给第三方开发商一个十分宽泛、自由的环境,催生各种新颖别致的应用软件具有强大的Linux社区的支持优势:良好的盈利模式3-7开的盈利模式,使得产业链条的各方:运营商、制造商、独立软件生产商都可以获得不错的利益将移动终端的评价标准从硬件向软件转变,极大的激发了软件开发者的热情优势:无缝结合的Google应用Google成为最大的互联网络搜索引擎已经有10多年历史从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带Android平台手机将无缝结合这些优秀的Google服务Android不足Google提供了一套Java核心包(J2SE5,J2SE6)的有限子集,尚不承诺遵守任何Java规范,可能会造成Java阵营的进一步分裂基于QEMU开发的模拟器调试手段不十分丰富,只支持通话、SMS等,速度慢暂不具备PushMail和Office功能,目前主要面向的是普通消费者用户,对商业用户支持尚弱系统环境AndroidSDK所支持的操作系统操作系统要求WindowsWindowsXP(32位);WindowsVista(32位或64位);Windows7(32位或64位)MacOSX10.5.8或更新(仅支持x86)Linux在Ubuntu系统上,需要8.04版或更新;64位版本必须支持32位应用程序;需要GNUC库(glibc)2.7或更新Android的系统架构LinuxKernelLinuxKernelAndroid基于Linux内核,但不是Linux内核提供系统核心服务,如进程、内存、电源管理,网络连接,驱动与安全等并不包括全部的LinuxLinuxKernelLinux内核位于硬件和软件堆之间的抽象层核心服务:安全机制、内存管理、进程管理、网络、硬件驱动内核扮演的是硬件层和系统其它层次之间的一个抽象层的概念操作系统的初始化和编程接口和标准Linux系统有所不同LibrariesLibraries系统库由一系列二进制动态库共同构成,通常使用C、C++开发。与框架层的系统服务相比,系统库不能独立运行于线程中,需要被系统服务加载到其进程空间里,通过类库提供的JNI接口进行调用。系统库分为两部分。分别是函数库和Android运行时。FunctionLibrariesWebKit基于开源WebKit的浏览器支持CSS、Javascript、DOM、Ajax多媒体框架基于PacketVideoOpenCORE平台支持标准音频、视频SQLite轻型数据库,支持多种平台NativeServers:Surface为多种应用提供2D、3D界面设计NativeServers:Audio音频处理HardwareAbstractionLibraries硬件抽象层HALUserspaceC/C++librarylayer硬件接口驱动作用:隔离硬件接口与Android平台逻辑AndroidRuntimeAndoidRuntime应用开发语言:JavaJava核心库把Java代码编译为Dalvik可执行文件(dex)Dalvik虚拟机指令:DalvikExcutableAndoidRuntime:核心库●android.app提供高层的程序模型和基本的运行环境。●android.content包括各种设备上的数据进行访问和发布。●android.database通过内容提供者浏览和操作数据库。●android.graphics底层的图形库,包括画布、颜色过滤、点、矩阵,可以将其绘制到屏幕上。●android.location定位和相关服务的类。●android.media提供管理多种音频、视频的媒体接口。●android.net提供网络访问的类。●android.os提供了系统服务、消息传输和IPC机制。AndoidRuntime:核心库●android.opengl提供OpenGL的工具。●android.provider提供访问Android内容提供者的类。●android.telephony提供与拨打电话相关的API交互。●android.view提供基础的用户界面接口框架。●android.util设计工具性的方法,例如时间日期的操作。●android.webkit默认浏览器操作接口。●android.widget包含各种UI元素,在应用程序的布局中使用。AndoidRuntime:虚拟机Dalvik虚拟机是一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机并进行了内存资源使用的优化,以及支持多个虚拟机的特点Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制需要注意的是,应用程序在虚拟机中执行的并非编译后的字节码,而是通过转换工具dx将Java字节码class文件转成dex格式的中间代码Java源代码(.java)类文件(.class)Dalvik虚拟机字节码文件(.dex)Dalvik虚拟机Java编译工具(javac)Dalvik虚拟机转换工具dx加载ApplicationsFrameworkApplicationsFramework是用户进行Android开发的基础,是谷歌发布核心应用时所使用的API框架。核心应用:联系人,邮件,电话,浏览器,日历,地图……充分访问所有核心应用的API简化组件的重用用Java编写应用程序ApplicationsFrameworkActivitymanager管理运行应用程序ContentProvider在各应用之间共享数据NotificationManager显示用户提示和状态栏ViewsSystem可扩展显示,用于构建UIApplicationsApplications用Java语言编写的运行在虚拟机上的程序。比如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等。需要大规模运算和图形处理时,开发者可以使用C、C++来实现底层模块(作为类库),并使用JNI接口与上层Java实现进行交互,然后利用交叉编译工具生成类库添加到应用中。开发环境、工具IDE:EclipseEclipseplug-in:ADT(AndroidDevelopmentTools)SoftwareDevelopmentKit:AndroidSDKAndroidEmulator:AVD(AndroidVirtualDevice)Debuger:ADB(AndroidDebugBridge)DDMS(DalvikDebugMonitorService)作业P91,2thanks