搭建开发环境,创建模拟器,最后完成一个简单的Android版应用程序并介绍项目目录。
1 搭载Android开发环境
1.1 安装Eclipse和ADT
下载Android SDK。SDK的全称是软件开发工具包(Software Development Kit),Android SDK提供了一些开发Android所必须的API库以及开发工具,用于开发测试和调试Android应用程序。ADT是一个Eclipse的插件,它包含了一些使用Eclipse开发Android应用程序所需要的工具包。曾经搭载Android开发环境需要单独下载Eclipse、Android SDK,ADT等并且还需要对其各种组件之间进行配置关联,现在只需要访问如下网址进行下载: http://developer.android.com/sdk/index.html
对于Windows平台而言,只需要点击Download the SDK ADT Bundle for Windows,并根据本机的系统,选择32-bit或者64-bit,即可下载完整的ADT包。
在这个下载好的ADT包中,包含了开发Android应用所需要的所有工具。包括:
1. 安装了ADT插件的Eclipse
2. Android SDK工具包
3. Android版本工具包
4. Android最新版本的SDK
5. Android模拟器
解压缩下载的文件,可以看到这样的目录结构:
其中eclipse文件夹下是一个精简版的Eclipse IDE,并且预装了ADT插件。sdk文件夹下,是Android的SDK,包含了与Android SDK相关的内容,在默认情况下\sdk\platforms目录下只包含了最新版本的Android SDK。因为Android系统存在多个版本,如果需要开发其它版本的Android应用程序,还需要下载其它版本的SDK,这需要通过SDK Manager进行下载。
1.2 下载其它版本的Android SDK
ADT包中只包含了最新版本的Android SDK,当需要开发其它版本的Android应用程序的时候,需要通过SDK Manager进行下载。
运行SDK Manager,如下图显示:
先来看看其它几个目录结构,Tools目录下包含了一些Android开发的标准工具。展开见已下载了必须的一些开发工具,如下图:
Extras中也包含了一些扩展工具已经帮我们下载好了,这里介绍对这些扩展工具进行简单介绍:
- Android Support Repository:Android版本扩展的知识库。
- Android Support Library:Android向下兼容的扩展包,因为Android的版本繁杂,扩展包可以使高版本的一些特性对低版本进行兼容。
- Google USB Driver: USB的驱动。在使用真机进行调试时,需要下载这个驱动。
- Intel x86 Emulator Accelerator:针对Intel处理器上运行模拟器的加速器。在当前开发机器使用i3以上型号的Intel处理器时,可以勾选此项下载,可以加快模拟器启动速度。
- Google Xxx:以Google开头的工具是一些由Google提供的服务,如果有需要可以一一下载。
接下来再来看看不同版本的SDK里包含了一些什么,这里以Android4.3为例:
对其中项目,分别进行简单讲解:
- SDK Platform:当前平台的jar包。
- Samples for SDK:SDK里API的简单示例代码。
- ARM EABI v7a System Image:模拟器的镜像运行在ARM的处理器上。
- Intel x86 Atom System Image:模拟器的镜像运行在Intel的处理器上。
- Google APIs:Google服务的API。
- Sources for Android SDK:Android SDK的源码。
2 创建模拟器(AVD)
在成功安装Android的开发环境之后,还不能马上进行Android的开发。因为Android应用程序需要在Android的系统上运行,虽然现在Android设备越来越便宜,但是并不能要求所有学习者都去买一部Android设备才能开始学习,因此Android提供了一个模拟器(AVD)来模拟一台Android手机,本小节将讲解如何创建一个Android模拟器。
模拟器(AVD)的英文全称是Android Virtual Device,它可以通过Android模拟器管理器来创建。在Eclipse中,点击如下图标开启Android Virtual Device Manager。
当Android Virtual Device Manager被开启之后,默认是没有模拟器的,需要我们创建:
点击Device Definitions,选取一个分辨率进行模拟器的创建。这里选择的是3.2寸的QVGA屏。
选定屏幕分辨率之后,点击"Create AVD…",开始创建一个新的模拟器。
创建一个模拟器需要设置很多属性,这里对其一一进行简单的介绍:
- AVD Name:当前模拟器的名字。
- Device:设备的尺寸。
- Target:当前Android的版本,包括当前环境下所有下载好的SDK版本号。
- CPU/ABI:选择模拟器使用的CPU类型,如果使用的Intel并且是I3以上处理器的,可以选择Intel,这样模拟器的启动会快一点。
- KeyBorad:是否包含键盘。
- Skin:是否使用皮肤。
- Back Camera:是否模拟后置摄像头,Webcm0之后会使用电脑的摄像头模拟手机的摄像头。
- Memory Options:存储,设置RAM和堆的大小。
- Internal Storage:设置内部存储器的大小,设置的内部存储器大小为真实硬盘的空间,建议200即可。
- SD Card:模拟一个SDK卡,并设置其大小,设置的SD卡大小为真实硬盘的空间,建议32即可。
- Snapshot:支持保存快照,不推荐勾选,会有不明BUG。
- Use Host GPU:启用GPU硬件加速,如果当前计算机是独立显卡,推荐勾选。
3 简单的Android程序
依次点击:File→New→Android Application Project,创建一个新的Android项目。如下图:
4 Android项目结构分析
上图为Eclipse的Package Explorer中显示的HelloWord应用的目录结构。可以看出包含很多不同的文件与文件夹,下面对目录中的文件及文件夹进行说明。
- src:包含项目的Java源文件。
- gen:包含了由编译器根据项目的资源自动生成的R.java文件。它会引用在项目中能找到全部资源,无需开发人员对其进行维护,全部是编译器自动完成。
- Android 4.2.2:Android4.2.2的jar包,包含了这个Android应用程序所需要的所有类库。
- assets:包含项目中所用到的所有原生资源。
- bin:包含了生成过程中ADT生产的文件,它会把项目打包成一个.apk文件(Android应用的安装包)。.apk包含了Android运行所需的一切文件,包括.dex文件、清单文件、资源文件等。
- res:该目录存放了Android项目的各种资源文件,比如,/layout/目录存放了界面布局文件,/values/目录存放了各种XML格子的资源文件,/drawable-Xxx/目录存放一些位图或者XML的资源。
- AndroidManifest.xml:Android应用程序的清单文件。可以在其中注册Android四大组件、也可以注册应用程序所需的权限。
AndroidManifest.xml清单文件
每个Android项目所必须的,它是整个Android项目的全局描述文件。在接触一个新项目时,最先看的就是清单文件,Android清单文件AndroidManifest.xml通常可以包含如下信息:
- 应用程序的包名及版本号,对应了应用的唯一标识。
- 应用程序所包含的所有组件(四大组件),均需要在此注册。
- 应用支持兼容的最低SDK版本和目标SDK版本。
- 应用所需要的系统权限。
Android为了安全起见,清单文件AndroidManifest.xml除了对应用的基本属性进行设置和注册Android组件之外,还需要对应用程序可能需要访问的系统权限进行显示注册。例如当前应用程序需要访问网络、需要发送短信、需要拨打电话等,这些都需要在清单文件中注册对应权限。
对于应用权限,需要通过<user-permission…/>元素进行注册。
例如,为当前应用注册访问网络的权限:
<uses-permission android:name="android.permission.INTERNET"/>
对于应用全局的权限,在<manifest…/>中注册,对于某个组件所具有的权限,需要在对应组件的元素内进行注册,如在<activity…/>中可以对当前的Activity注册对应权限。
Android系统为了系统安全性的考虑,对所有需要访问系统资源的地方都需要进行显式的权限注册,所以它也提供了大量的权限,这些权限都被以常量的形式定义在Manifest.permission类中。所有被应用程序注册的权限,在安装应用的时候,都会提示给用户知道。
下面介绍一些常用的权限:
- ACCESS_NETWORK_STATE:允许应用程序获取网络状态信息的权限。
- ACCESS_WIFI_STATE:允许应用程序获取Wifi网络状态信息的权限。
- BATTERY_STATS:允许应用程序获取电池状态信息的权限。
- BLUETOOTH:允许应用程序连接匹配蓝牙设备的权限。
- BROADCAST_SMS:允许应用程序接收短信提醒的权限。
- CALL_PHONE:允许应用程序拨打电话的权限。
- CAMERA:允许应用程序使用照相机的权限。
- CHANGE_NETWORK_STATE:允许应用程序改变网络连接状态的权限。
- CHANGE_WIFI_STATE允许应用程序改变Wifi网络连接状态的权限。
- DELETE_CACHE_FILES:允许应用程序删除缓存文件的权限。
- DELETE_PACKAGES:允许应用程序卸载程序的权限。
- FLASHLIGHT:允许应用程序访问闪光灯的权限。
- INTERNET:允许应用程序访问网络的权限。
- MODIFY_AUDIO_SETTINGS:允许应用程序修改全局声音设置的权限。
- READ_CONTACTS:允许应用程序读取联系人数据的权限。
- READ_PHONE_STATE:允许应用程序读取电话状态的权限。
- READ_PHONE_SMS:允许应用程序读取短信的权限。
- READ_EXTERNAL_STORAGE:允许应用程序读取外部存储器的权限。
- REBOOT:允许应用程序重启系统的权限
- RECORD_AUDIO:允许应用程序录音的权限。
- SEND_SMS:允许应用程序发送短信的权限。
- SET_ORIENTATION:允许应用程序旋转屏幕的权限。
- SET_TIME:允许应用程序设置时间的权限。
- SET_TIME_ZONE:允许应用程序设置时区的权限。
- SET_WALLPAPER:允许应用程序设置桌面壁纸的权限。
- VIBRATE:允许应用程序访问振动器的权限。
- WRITE_EXTERNAL_STORAGE:允许应用程序向外部存储器写入内容的权限。
5 DDMS调试环境
模拟器运行之后,就是一个独立的操作系统,我们无法捕捉到其内的状态。所以Android为我们提供了DDMS(Dalvik Debug Monitor Service)调试环境,它是一个Android的调试环境。
切换到DDMS调试环境只需要在Eclipse的右上角点击DDMS即可,或者打开Open Perspective面板选择DDMS打开。
进入DDMS调试环境,可以在界面上看到几个面板,简单介绍几个常用的:Devices,它显示了当前运行的模拟器的进程。如下图:
File Explorer,展示了模拟器上系统的内部文件结构,可以通过File Explorer对模拟器上的文件进行导入导出。如下图:
LogCat,一个日志输出工具,在其中可以输出Android的一些日志信息,开发人员也可以通过Log类,写入运行时消息到LogCat中。如下图:
Emulator Control,模拟器控制器,它可以对模拟器模拟一些状态进行设置。如Telephone Status可以设置模拟器的当前的状态;
Telephone Actions可以对模拟器模拟一个来电或者短信内容;
Location Controls可以在模拟器上模拟一个当前所在的位置信息
模拟器运行之后,就是一个相对于当前运行系统的另外一个独立的系统。当前系统为了捕获到模拟器上的信息,看似是使用的DDMS,其实DDMS也是借助adb.exe这个工具,它位于Android SDK的\sdk\platform-tools目录下,该目录包含了一些开发Android应用程序需要用到的工具。adb的全称是Android Debug Bridge,翻译过来就是Android调试桥,用于实现当前系统对模拟器的桥接。