OpenGL ES 3.x游戏开发(上卷)
上QQ阅读APP看书,第一时间看更新

1.3 Hello Android应用程序的开发

本节首先将介绍如何在Eclipse中创建一个基于Android的Hello World应用程序,之后将简单介绍Android应用程序的调试,为读者以后学习高级开发铺平道路。

1.3.1 第一个Android应用程序

本小节将向读者介绍如何在Eclipse中创建一个基于Android的Hello World应用程序,基本步骤如下所列。

(1)单击eclipse.exe,启动Eclipse,依次选择“File/New/ Android Application Project”,如图1-43所示。或者单击按钮后,系统将弹出新建项目对话框,如图1-44所示。

▲图1-43 创建项目方法

▲图1-44 创建项目对话框

(2)在创建项目对话框中选择“Android/Android Application Project”,如图1-45所示,然后单击“Next”按钮,执行下一步,即弹出New Android Application对话框,如图1-46所示。

▲图1-45 选择Android Application Project创建Android应用程序

▲图1-46 New Android Application对话框

(3)在New Android Application对话框中输入应用程序的名称(在这里输入的是Sample_1_1),然后在Project Name中输入项目名称(这里输入的名称与Application Name中的相同,当然也可以不同),同时在Package Name中输入应用程序的包名(这里输入的是wyf.ytl),如图1-46所示。

(4)接着在Minimum Required SDK中选择应用程序最低版本(这里选择的是Android 2.2版本),最后在Target SDK中选择应用程序的目标版本,都填完后,整体情况如图1-46所示。

提示

创建项目输入项目包名时,需要至少使用二级包名,否则在该对话框上会显示“Package name must have at least two identifiers.”的出错信息。

(5)单击“Next”按钮后进入如图1-47所示的界面,根据需要勾选是否创建自定义图标,勾选“Create activity”,根据需要也可更改默认的项目路径,最后单击“Next”按钮执行下一步。接着在如图1-48所示的界面中选择Activity样式,此处选择的是“Blank Activity”,单击“Next”按钮执行下一步。

▲图1-47 创建项目截图1

▲图1-48 创建项目截图2

(6)在如图1-49所示的界面中输入Activity Name—Hello Android和Layout Name—main,单击“Finish”按钮完成项目的创建。此时在Eclipse的Project Explorer界面中会自动添加创建的项目Sample_1_1,其目录结构如图1-50所示。

▲图1-49 单击“Finish”按钮创建项目

▲图1-50 创建完成的Android项目

(7)在项目名上单击鼠标右键,在弹出的菜单中然后依次选择“Run As/Android Application”,如图1-51所示。即可运行刚刚创建的HelloAndroid项目,该项目在模拟器上的运行效果如图1-52所示。

▲图1-51 运行Android程序

▲图1-52 HelloAndroid项目运行效果

从上述步骤中可以看出,使用Eclipse创建并运行一个Android应用程序是非常简便的。

1.3.2 Android应用程序的项目结构

上一小节介绍了如何通过Android SDK自动生成Android项目,但是没有对该项目中的内容及组成进行介绍。本小节将对Android项目中的各重要组成部分逐一进行介绍,具体情况如图1-53所示。

▲图1-53 Android应用程序项目结构

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.3.3 Android应用程序的调试

Android SDK提供了一个强大的调试工具DDMS(Dalvik Debug Monitor Service),通过DDMS可以调试并监控Android程序的运行,更好地帮助开发人员完成软件的调试和开发。接下来将会详细介绍DDMS的打开与使用的方法。

❑ 一般情况下在Eclipse中安装了ADT插件后,Eclipse窗口的右上侧会有DDMS的选项按钮,如图1-54所示。单击此按钮即可切换到DDMS界面,如图1-55所示。

▲图1-54 DDMS按钮

▲图1-55 DDMS界面

❑ 有些时候,DDMS选项按钮是隐藏的,读者可以通过Eclipse窗口界面右上侧的(Open Perstective)按钮来打开DDMS,如图1-56所示。

▲图1-56 使用Open Perstective按钮打开DDMS

❑ 从前面的介绍中可以看出,DDMS的一大功能就是查看程序运行时的后台输出信息。实际的应用程序开发中既可以使用传统的System.out.println方法来打印输出调试信息,也可以使用Android特有的android.util.Log类来输出调试信息,这两种方法的具体使用方式如下。

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-57所示。

▲图1-57 DEBUG界面

(5)在LogCat面板下的Log选项卡中可以看到输出的打印语句,如图1-58所示。

▲图1-58 Log选项卡

有时可能觉得在Log中的输出信息太多,不便于查看。这时可以在LogCat中添加一个专门输出System.out信息的面板。单击右边区域的(Create Filter)按钮,系统会弹出Log Filter对话框,在Filter Name输入框中输入过滤器名称,在by Log Tag中输入用于过滤的标志,如图1-59所示。

▲图1-59 Log Filter对话框

提示

由于输出的语句主要有System.out.println(换行)、System.out.print(不换行)两种,所以,设置by Log Tag中的内容为System.out用以进行过滤。

此时再次运行应用程序观察输出的情况,在LogCat下的System面板中将会只存在System.out的输出信息,效果如图1-60所示。

▲图1-60 只查看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-61所示。

▲图1-61 使用Log输出测试数据

提示

使用Log类时需要使用“import android.util.Log; ”语句进行导入,使用System.out.println方法或android.util.Log类输出调试信息各有优缺点,读者可以在开发项目时自行体会,选用自己所需要的方式。同时需要注意的是,DDMS还有很多强大的功能,这里只介绍了其最基本的用法,有兴趣的读者可以参考人民邮电出版社出版的《Android应用案例开发大全(第3版)》一书的第1.4节“DDMS的灵活应用”或参考其他技术资料。

1.3.4 实际设备的联机调试

由于模拟器在实际项目开发中不是很方便,性能较差,因此,实际开发中一般使用真机对开发的应用程序进行联机调试。故本小节将介绍实际设备联机调试的方法,基本步骤如下。

(1)下载与真机型号相匹配的驱动程序(注意部分手机自带驱动程序,无须下载)。

(2)用数据线将手机和开发PC相连接。

(3)根据提示,在PC上安装手机驱动程序。

(4)将手机设置为允许安装未知来源软件,并打开手机上的USB调试。这两项设置一般都可以在手机设置选项下的应用程序项目中找到,根据手机具体型号和Android操作系统版本的不同可能略有区别。若读者的设备与这里介绍的不同可以参考其他资料或上网搜索相关机型的设置说明。

(5)再次运行前面开发的应用程序,系统将弹出Android Device Chooser窗口,如图1-62所示。

▲图1-62 Android Device Chooser窗口

(6)在窗口中选择自己的设备,然后单击“OK”按钮,程序将被送入到连接的真机上运行。

(7)再打开DDMS,查看左上角的Devices窗口,窗口中列出了真机设备,如图1-63所示。

▲图1-63 DDMS中的Devices窗口

(8)选中真机设备,LogCat窗口就出现了真机调试的打印内容,这样就可以在真机中进行联机调试。