2.3 Android SDK介绍

SDK(software development kit)软件开发工具包,是软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。Android SDK就是Android专属的软件开发工具包。

2.3.1 Android SDK目录结构

Android SDK解压即可完成安装,其中包含的文件、文件夹如图2.10所示。

图2.10 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设备进行进程间通信(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强烈推荐初学者进行学习,对于SQLite数据库操作可以查看NotePad例子,对于游戏开发可以参考Snake和LunarLander,对于Android主题开发Home则是Android 5时代的主题设计原理。

(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无线网络支持等。