2.3 Android SDK介绍
SDK(Software Development Kit)软件开发工具包是软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。Android SDK就是Android专属的软件开发工具包。
2.3.1 Android SDK目录结构
Android SDK解压即可完成安装,其中包含的文件、文件夹如图2.12所示。
图2.12 Android SDK目录结构图
(1)add-ons
该目录中存放Android的扩展库,比如Google Maps,但若未选择安装Google API,则该目录为空。
(2)docs
该目录是developer.Android.com的开发文档,包含SDK平台、工具、ADT等的介绍,开发指南,API文档,相关资源等。
(3)extras
该目录用于存放Android附加支持文件,主要包含Android的support支持包、Google的几个工具和驱动、Intel的IntelHaxm。
(4)platforms
该目录用于存放Android SDK Platforms平台相关文件,包括字体、res资源、模板等。
(5)platform-tools
该目录包含各个平台工具,其中主要包含以下几部分。
• api目录。api-versions.xml文件,用于指明所需类的属性、方法、接口等。
• lib目录。lib目录中只有dx.jar文件,为平台工具启动dx.bat时加载并使用jar包里的类。
• aapt.exe。主要作用是把开发的应用打包成APK安装文件,如果用Eclipse开发,就不用通过命令窗口输入命令+参数实现打包。
• adb.exe。ADB即Android Debug Bridge调试桥,可以通过它连接Android手机(或模拟器)与PC端,可以在PC端上控制手机的操作。如果用Eclipse开发,一般情况下ADB会自动启动,之后我们可以通过DDMS来调试Android程序。
• aidl.exe。AIDL全称是Android Interface Definition Language,是Android内部进程通信接口的描述语言,用于生成可以在Android设备进行进程间通信(Inter-Process Communication,IPC)的代码。
• dexdump.exe。使用dexdump可以反编译.dex文件,例如.dex文件里包含3个类,反编译后也会出现3个.class文件,通过这些文件可以大概了解原始的Java代码。
• dx.bat。其功能是将.class字节码文件转成Android字节码.dex文件。
• fastboot.exe。通过Fastboot可以进行重启系统、重写内核、查看连接设备、写分区、清空分区等操作。
• Android llvm-rs-cc.exe。Renderscript采用LLVM低阶虚拟机,llvm-rs-cc.exe的主要作用是对Renderscript的处理。
• NOTICE.txt和source.properties。NOTICE.txt只是给出一些提示的信息;source.properties是资源属性信息文件,主要显示该资源生成时间、系统类型、资源URL地址等。
(6)samples
samples是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者学习。
(7)system-images
该目录存放系统用到的所有图片。
(8)temp
该目录存放系统中的临时文件。
(9)tools
作为SDK根目录下的tools文件夹,这里包含重要的工具,比如ddms用于启动Android调试工具,如logcat、屏幕截图和文件管理器;而draw9patch则是绘制Android平台的可缩放PNG图片的工具;sqlite3可以在PC上操作SQLite数据库;而monkeyrunner则是一个不错的压力测试应用,模拟用户随机按钮;mksdcard是模拟器SD映像的创建工具;emulator是Android模拟器主程序,不过从Android 1.5开始,需要输入合适的参数才能启动模拟器;traceview是Android平台上重要的调试工具。
2.3.2 Android.jar
作为一个Java项目,通常情况下都会引入要用到的工具类,也就是JAR包,在Android开发中,绝大部分开发用的工具包都被封装到一个名叫Android.jar的文件里了。在Eclipse中展开来看,可以看到J2SE中的包、Apache项目中的包,还有Android自身的包文件。Android的包文件主要包括以下内容。
• Android.app:提供高层的程序模型和基本的运行环境。
• Android.content:包含各种对设备上的数据进行访问和发布的类。
• Android.database:通过内容提供者浏览和操作数据库。
• Android.graphics:底层的图形库。
• Android.location:定位和相关服务的类。
• Android.media:提供一些类管理多种音频、视频的媒体接口。
• Android.net:提供帮助网络访问的类,超过通常的java.net.*接口。
• Android.os:提供系统服务、消息传输、IPC机制。
• Android.openg:提供OpenGL的工具。
• Android.provider:提供类,访问Android的内容提供者。
• Android.telephony:提供与拨打电话相关的API交互。
• Android.view:提供基础的用户界面接口框架。
• Android.util:涉及工具性的方法,例如时间日期的操作。
• Android.webkit:默认浏览器操作接口。
• Android.widget:包含各种UI元素(大部分是可见的)在应用程序的屏幕中使用。
2.3.3 Android API核心包
SDK中集成了很多开发应用的API,它们通过Android SDK来编写应用程序的基础,这里从最底层到最高层列出核心包并加以说明。
• Android.util:包含一些底层辅助类,例如特定的容器类、XML辅助工具类等。
• Android.os:提供基本的操作服务,如消息传递和进程间通信IPC。
• Android.graphics:作为图形渲染包,提供图形渲染功能。
• Android.text Android.text.method Android.text.style Android.text.util:提供一套丰富的文本处理工具,支持富文本、输入模式等。
• Android.database:包含底层API处理数据库,方便操作数据库表和数据。
• Android.content:提供各种服务访问手机设备上的其他应用的数据和资料的接口。
• Android.view:核心用户界面框架。
• Android.widget:提供标准用户界面元素,如List(列表)、Buttons(按钮)、Layout manager(布局管理器)等,是组成界面的基本元素。
• Android.app:提供高层应用程序模型,实现使用Activity。
• Android.provider:提供方便调用系统提供的content providers接口。
• Android.telephony:提供API和手机设备的通话接口。
• Android.webikit:包含一系列基于Web内容工作的API。
2.3.4 Android API扩展包
核心的Android API在每部手机上都可以使用,但仍然有一些API接口有各自特别的适用范围,这就是所谓的“可选API”。这些API之所以是“可选的”,主要是因为一个手持设备并不一定要完全支持这类API,甚至可以完全不支持。
• Location-Based Services(定位服务)。Android操作系统支持GPS API-LBS,可以通过集成GPS芯片来接收卫星信号,通过GPS全球定位系统中至少3颗卫星和原子钟来获取当前手机的坐标数据,通过转换就可以成为地图上的具体位置,这一误差在手机上可以缩小到10米。在谷歌开发手机联盟中可以看到著名的SiRF star。所以未来gPhone手机上市时集成GPS后的价格不会很贵。同时,谷歌正在研制基于基站式的定位技术-MyLocation,可以更快速地定位,与前者GPS定位需要花费大约1分钟相比,基站定位更快。
• Media APIs(多媒体接口)。Android平台上集成了很多影音解码器以及相关的多媒体API,通过这些可选API,厂商可以让手机支持MP3、MP4、高清晰视频播放处理等。
• 3D Graphics with OpenGL(3D图形处理OpenGL),可选API。Android平台上的游戏娱乐功能,如支持3D游戏或应用场景就需要用到3D技术,手机生产厂商根据手机的屏幕以及定位集成不同等级的3D加速图形芯片来加强gPhone手机的娱乐性,有来自高通的消息称,最新的显示芯片在gPhone上将会轻松超过索尼PS3。
• Low-Level Hardware Access(低级硬件访问)。这个功能主要用于控制手机的底层方面操作,设计底层硬件操作将主要由各个手机硬件生产厂商来定制,支持不同设备的操作管理,如蓝牙(Bluetooth)以及WIFI无线网络支持等。