1.4 Hello Android应用程序的开发
本节首先将介绍如何在Eclipse中创建一个基于Android的Hello World应用程序,之后将简单介绍Android应用程序的调试,为读者以后学习高级开发铺平道路。
1.4.1 第一个Android应用程序
本小节将向读者介绍如何在Eclipse中创建一个基于Android的Hello World应用程序,基本步骤如下所列。
(1)首先打开Eclipse,然后依次单击File|New|Project(如图1-29所示)或者单击按钮后,系统将弹出新建项目对话框,如图1-30所示。
图1-29 新建项目方法
图1-30 新建项目对话框
(2)在新建项目对话框中选择Android Application Project,然后单击“Next”按钮(如图1-31所示),弹出New Android Application对话框。
图1-31 选择Android Project创建Android应用程序
(3)在New Android Project对话框中输入应用程序的名称(在这里输入的是Sample1_1),接着在Project name中输入项目的名称(这里输入的名称与Application Name中的相同,当然也可以不同);同时在Package name中输入应用程序的包名(这里输入的是com.bn.sample1_1),如图1-32所示。
图1-32 New Android Project对话框
(4)接着在Minimum Required SDK中选择应用程序最低支持的版本(这里选择的是Android 2.2版),最后在Target SDK中选择应用程序的目标版本(这里选择的是Android 2.2版)。都填写完成后,整体情况如图1-32所示。
提示
创建项目时输入项目的包名时,需要至少使用二级包名,否则在该对话框上方会显示“Package name must have at least two identifiers”的错误信息。
(5)单击“Next”按钮进入下一个界面,根据需要勾选是否创建自定义图标,勾选Create activity,根据需要也可更改默认的项目路径,最后单击“Next”按钮进入下一步,如图1-33所示。
图1-33 创建项目截图1
(6)接着在如图1-34所示的界面中选择Activity样式,此处选择的是Blank Activity,单击“Next”按钮进入下一个界面。
图1-34 创建项目截图2
(7)最后填入Activity的名称,单击“Finish”按钮(如图1-35所示)完成项目的创建,此时在Eclipse的Project Explorer界面中会自动添加创建的项目Sample1_1,如图1-36所示。
图1-35 单击Finish按钮创建项目
图1-36 创建完成的Android项目
(8)在Project Explorer中选择本项目,然后单击鼠标右键,在弹出的快捷菜单中依次选择Run As|Android Application运行本应用程序(如图1-37所示),或者单击按钮运行本应用程序,运行效果如图1-38所示。
图1-37 运行Android应用程序方式1
图1-38 运行效果图
从上述步骤中可以看出,使用Eclipse创建并运行一个Android应用程序是非常容易的。
图1-39 Android应用程序项目结构
1.4.2 Android应用程序的项目结构
上一小节介绍了如何通过Android SDK自动生成Android项目,但是没有对该项目中的内容及组成进行介绍。本小节将对Android项目中的各重要组成部分逐一进行介绍,如图1-39所示。
1.src源代码文件夹
该文件夹下存放了应用程序中所有开发的Java源代码。需要注意的是,在更为复杂的项目中,该文件夹下可以有很多不同的包用于存放不同功能目的的源代码。
2.gen文件夹
该文件夹中存放的是Eclipse中ADT插件自动生成的R.java文件。实际上R.java定义了一个R类,其中包含应用程序的用户界面、图像以及字符串等资源的编号。也就是每有一个资源实例,系统就为其在R类中生成一个相应的编号。这些编号都是系统自动生成的,用户不应该修改。
3.assets文件夹
该文件夹用于存放应用程序需要使用的一些外部资源,如音频、视频、数据文件等。在应用程序中可以使用“getResources().getAssets().open("aa.mp3")”得到指定资源文件的输入流。
4.res资源文件夹
该文件夹下一般有drawable系列、layout及values等文件夹,下面对这些文件夹逐一进行介绍。
· drawable系列文件夹。该系列文件夹一般有drawable-hdpi、drawable-mdpi、drawable-ldpi 3个文件夹,这3个文件夹分别用来存放不同分辨率目标设备的图片资源。当应用程序在目标设备上运行时,系统会自动根据目标设备的分辨率选择对应文件夹下的图片使用。
· layout文件夹。该文件夹下包含了所有使用xml格式的界面描述文件,这些文件用于表述应用程序中用户界面的布局。具体的开发中读者会体会到,用这种方式进行布局的开发比传统的使用Java源代码开发布局要方便简捷得多。
· values文件夹。本文件夹中包含了一些xml格式的资源描述文件,一般包括string.xml(字符串资源)、color.xml(颜色资源)、style.xml(样式资源)等。
5.AndroidManifest.xml文件
此文件是整个应用程序的描述文件,应用程序中所需要的各个组件均需要在此文件中说明。同时,应用程序需要的一些权限,如网络访问权限、I/O读取权限等,也需要在此文件中进行声明。
提示
除了上述文件夹及文件外,还有一个一般开发时不需要直接使用的default. properties文件。此文件为项目的配置文件,一般不需要人为改动,系统会自动对其进行管理,有兴趣的读者可以自行打开查看。
1.4.3 Android应用程序的调试
Android SDK提供了一个强大的调试工具DDMS(Dalvik Debug Monitor Service),通过DDMS可以调试并监控Android应用程序的运行,打开DDMS的方法如下。
· 一般情况下,在Eclipse中安装了ADT插件后,Eclipse窗口的右上角会有DDMS的选项按钮,如图1-40所示。单击此按钮即可切换到DDMS界面,如图1-41所示。
图1-40 DDMS选项按钮的位置
图1-41 DDMS界面
· 有些时候,DDMS选项按钮是隐藏的,读者可以通过Eclipse窗口界面右上角的(Open Perstective)按钮来打开DDMS,如图1-42所示。
· 从前面的介绍中可以看出,DDMS的一大功能就是查看应用程序运行时的后台输出信息。实际的应用程序开发中既可以使用传统的System.out.println 方法来打印输出调试信息,也可以使用Android特有的android.util.Log类来输出调试信息,这两种方法的具体使用方式如下。
图1-42 使用Open Perstective按钮打开DDMS
1.System.out.println方法
首先介绍Java开发人员十分熟悉的System.out.println方法,其在Android应用程序中的使用方法与传统Java中相同,具体步骤如下。
提示
在这里就不再创建新的Android项目了,直接使用的是上一小节已经创建的Android项目(Sample1_1)。
(1)首先在Eclipse中打开src文件夹下的com.bn.Sample1_1包中的MainActivity.java文件。
(2)然后在setContentView(R.layout.activity_main)语句后面添加代码System.out.println(“the first”)。
(3)代码修改完成后,再次运行本应用程序。
(4)应用程序运行后打开DDMS,找到LogCat面板,更改为debug界面,如图1-43所示。
图1-43 DEBUG界面
(5)在LogCat面板下的Log选项卡中可以看到输出的打印语句,如图1-44所示。
图1-44 Log选项卡
有时可能觉得在Log中的输出信息太多,不便于查看。这时可以在LogCat中添加一个专门输出System.out信息的面板。单击右边区域的(Create Filter)按钮,系统会弹出Log Filter对话框,在Filter Name输入框中输入过滤器名称,在by Log Tag中输入用于过滤的标志,如图1-45所示。
图1-45 Log Filter对话框
说明
由于输出的语句主要有System.out.println(换行), System.out.print(不换行)两种,所以设置by Log Tag中的内容为System.out以进行过滤。
此时再次运行应用程序观察输出的情况,在LogCat下的System面板中将会只存在System.out的输出信息,效果如图1-46所示。
图1-46 只查看System.out输出的信息
2.android.util.Log类
除了Java开发人员熟知的System.out.println方法外,Android还专门提供了另外一个类android.util.Log来进行调试信息的输出。下面将介绍Log类的使用,具体步骤如下。
(1)在MainActivity.java中注释掉前面已经添加的打印输出语句“System.out.println(“the first”); ”,然后在后面添加代码“Log.d(“Log”,“the first Log”); ”。
(2)运行应用程序,在DDMS中找到LogCat面板,切换到All messages页面,观看打印的内容,如图1-47所示。
图1-47 使用Log输出测试数据
提示
使用Log类时需要使用“import android.util.Log; ”语句进行导入,使用System.out. println方法或android.util.Log类输出调试信息各有优缺点,读者可以在开发项目时自行体会,选用自己所需要的方式。同时需要注意的是,DDMS还有很多强大的功能,这里只介绍了其最基本的用法,有兴趣的读者可以参考2011年9月人民邮电出版社出版的《Android应用案例开发大全》一书的第1.4节“DDMS的灵活应用”或参考其他技术资料。
1.4.4 实际设备的联机调试
由于模拟器在实际项目开发中不是很方便,性能较差,因此实际开发中一般使用真机对开发的应用程序进行联机调试。故本小节将介绍实际设备联机调试的方法,基本步骤如下。
(1)下载与真机型号相匹配的驱动程序(注意部分手机自带驱动程序,无须下载)。
(2)用数据线将手机和开发PC相连接。
(3)根据提示,在PC上安装手机驱动程序。
(4)将手机设置为允许安装未知来源软件,并打开手机上的USB调试。这两项设置一般都可以在手机设置选项下的应用程序项目中找到,根据手机具体型号和Android操作系统版本的不同可能略有区别。若读者的设备与这里介绍的不同可以参考其他资料或上网搜索相关机型的设置说明,很快便可设置成功。
(5)再次运行前面开发的应用程序,系统将弹出Android Device Chooser窗口,如图1-48所示。
图1-48 Android Device Chooser窗口
(6)在窗口中选择自己的设备,然后单击“OK”按钮,应用程序将送入连接的真机上运行。
(7)再打开DDMS,查看左上角的Devices窗口,窗口中列出了真机设备,如图1-49所示。
图1-49 DDMS中的Devices窗口
(8)选中真机设备,LogCat窗口就出现了真机调试的打印内容,这样就可以在真机中进行联机调试了。