
1.3 开发Android应用程序

03 开发Android应用程序
在前文第1.2节中配置好了Android Studio开发环境后,本节在手机上实现一个应用程序,程序运行时可在手机顶端位置显示“Hello,Android!”字符串。
1.3.1 新建Android应用程序
通过上述的一系列软件的安装配置,Android Studio已经成为Android开发包和模拟器的集成环境,Android应用程序开发的主要过程在Android Studio中就可以完成。
1)启动Android Studio后,执行“File”→“New”→“New Project”菜单命令新建一个Android项目,在创建新项目向导中选择“Phone and Table”下的“Empty Activity”,单击“Next”按钮,如图1-17所示。

图1-17 创建新项目向导
2)在图1-18所示的“Configure your project”界面中输入“Name”(应用名称)、“Package name”(包名称)、“Save location”(存储路径)、“Language”(开发语言)和“Minimum API level”(最低运行版本)。其中,应用名称将显示在系统的程序组界面中,此处命名为“ch01_01”;包名称可以采用默认值,也可以自己重新命令,一般为com.****.****的格式;存储路径为项目文件的存储位置;开发语言默认为Kotlin(Kotlin是简化的Java表达形式),在新版本的Android Studio中,Google推荐使用Kotlin作为Android的开发语言,新手建议选择Java作为开发语言,这里选择Java;最低运行版本根据需要选择,表明当前应用运行的最低Android版本要求;其他参数可以采用默认值。最后单击“Finish”按钮完成应用项目的创建。

图1-18 项目信息设置
1.3.2 使用模拟器查看结果
在创建项目过程中,除了输入必要的名字外,并没有写一行代码,因为Android已经帮开发人员做好了一切,此时就可以用模拟器查看一下程序的执行效果。
执行“Run”→“Run‘app ’”菜单命令,或单击工具栏中的“Run”按钮,当然也可以使用Run命令的快捷键〈Shift+F10〉就可以在模拟器中看到运行结果,图1-19所示为默认效果。

图1-19 默认效果
1.3.3 Android项目结构
项目创建成功后,在Android Studio窗口左边的Project视图中展开文件夹,文件夹结构如图1-20所示。创建Android工程时,Android Studio已经建立了一系列管理文件夹,负责分门别类地管理各种文件。这与工程真正的物理文件夹基本是保持一致的。当然,不同版本的Android Studio产生的文件夹会有一些差异。

图1-20 文件夹结构
Android Studio的工程创建分两个层级,第一个层级通过菜单命令“File”→“New”→“New Project”创建,实际是指创建了新的工作空间。第二个层级是通过菜单命令“File”→“New”→“New Module”创建,此时创建的新模块实际是指一个单独的App工程。在一个工作空间里面可以有多个模块,每个模块都可以单独编译运行,也可以选择其中的部分模块一起编译运行。
在项目中,主要有两个文件夹:一个是app,另一个是Gradle Scripts。
app文件夹下有三个子文件夹,其功能说明如下。
1)manifests配置文件夹:其下只有一个AndroidManifes.xml文件,此文件包含了App运行前系统必须掌握的相关信息,如应用程序名称、图标、应用程序的包名、组件注册信息和权限配置等,每个Android项目都有一个这样的配置文件。
2)Java源码文件夹:其下有三个包,第一个为App工程的源代码,另外两个为测试用的源代码。Android以Java作为编程语言,因此其程序文件以.java作为扩展名。
3)res资源程序文件夹:其下又有四个子目录用于放置各类资源,主要有三种类型:XML文件、位图(图像)文件和raw(声音)文件。
Gradle Scripts文件夹中主要是项目的编译配置脚本文件,主要包含以下文件。
1)build.gradle:该文件分为项目级和模块级两种,用于描述工程的编译规则。
2)proguard-rules.pro:用于描述java文件的代码混淆规则。
3)gradle.properties:用于配置编译工程的命令行参数,一般无须改动。
4)settings.gradle:配置哪些模块在一起编译。初始内容为include ‘:app’,表示只编译app模块。
5)local.properties:项目的本地配置,一般无须改动。该文件是在工程编译时自动生成的,用于描述开发者本机的环境配置,如SDK的本地路径、NDK的本地路径等。
1.3.4 Android应用程序的调试
Android Studio窗口包含了Terminal、Build、Logcat等视图,在窗口底部可以进行视图切换。其中,Terminal视图用于在命令行方式下执行Android平台提供的一些命令;Build视图用于查看项目的编译和构建信息;Logcat视图用于查看Android设备运行的日志信息。
(1)Logcat视图
在开发过程中会遇到各种各样的问题,需要开发人员耐心调试。一般程序错误可以使用Android Studio中的Logcat视图查看错误,例如前面创建的程序,如果将onCreate()方法修改成如下代码。

同Java语言一样,这段代码在运行时会发生NullPointException异常。启动程序在模拟器中运行时,可在Logcat视图中查看错误语句及原因,如图1-21所示。

图1-21 Logcat视图
(2)使用Log日志信息
Android SDK提供了Log类来获取程序运行时的日志信息,该类位于android.util命名空间中。Log类提供了一些方法,用来输出日志信息,如表1-2所示。开发人员可以使用这些方法输出程序的中间结果,输出的信息可在Logcat视图中查看。
表1-2 Log类的常用方法

(续)

例如在程序代码中有如下语句:Log.d("调试", "Debug调试信息");,此语句执行后,在Logcat视图中可见对应的输出信息,如图1-22所示。

图1-22 Log类的输出信息
(3)使用断点调试
使用Logcat视图输出信息的方式调试程序是非常古老的程序调试方法,而且经常导致程序代码混乱,所以建议使用Android Studio内置的Java调试器调试Android程序。使用Java调试器可以设置程序断点,实现程序单步执行,在调试过程中执行查看变量和表达式的值等调试操作。Android程序与一般的Java程序的调试方法基本相同,这里不再赘述。
特别说明:为方便描述及节约篇幅,在本书后续章节中Android Studio一律简称AS,模拟器的运行图示只截取内容部分。