学习到这里,你可能对Android编译过程是如何工作的充满疑惑。我们已经知道在项目文件发生变化时,无需使用命令行工具,Eclipse便会自动进行编译。在整个编译过程中,Android开发工具将资源文件、代码以及AndroidManifest.xml文件(包含应用的元数据)编译生成.apk文件,如图1-15所示。为了让.apk应用能够在模拟器上运行,.apk文件必须以debug key签名。(分发.apk应用给用户时,应用必须以release key签名。如需了解更多有关编译过程的信息,可参考Android开发文档http://developer.android.com/tools/publishing/preparing.html。) 图1-15 编译GeoQuiz应用 那么,应用的activity_quiz.xml布局文件的内容该如何转变为View对象呢?作为编译过程的一部分,aapt(Android Asset Packaging Tool)将布局文件资源编译压缩紧凑后,打包到.apk文件中。当QuizActivity类的onCreate(...)方法调用setContentView(...)方法时, QuizActivity使用LayoutInflater类实例化定义在布局文件中的每一个View对象,如图1-16所示。 (除了在XML文件中定义视图的方式外,也可以在activity里使用代码的方式创建视图类。但应用展现层与逻辑层分离有很多好处,其中最主要的优点是可以利用SDK内置的设备配置改变,有关这一点将在第3章中详细讲解。) 有关XML不同属性的工作原理以及视图是如何显示在屏幕上的等更多信息,请参见第8章。 图1-16 activity_quiz.xml中的视图实例化 Android编译工具 截至目前,我们所看到的项目编译都是在Eclipse里执行的。编译功能已整合到正在使用的ADT开发插件中,插件调用了aapt等Android的标准编译工具,但编译过程本身是由Eclipse来管理的。 有时,出于种种原因,可能需要脱离Eclipse进行代码编译。最简单的方法是使用命令行编译工具。当前最流行的两大工具是maven和ant。使用ant的人相对较少,但使用起来相对比较容易。使用ant前应完成如下准备工作: 确保ant已安装并可以正常运行; 确保Android SDK的tools/和platform-tools/目录包含在可执行文件的搜索路径中。 现在切换到项目目录并执行以下命令: Eclipse项目生成器模板不包含ant可用的build.xml。以上命令将生成build.xml文件。该命令只需要运行这一次即可。 接下来就可以编译项目了。如果需要编译并签名为debug的.apk,请在同一目录下执行如下命令: 该命令执行后即开始进行实际的项目编译,编译完成后在bin/your-project-name-debug.apk目录下生成相应的.apk文件。再通过以下安装命令安装.apk文件: 以上命令将把apk应用安装到当前连接的设备上,但不会运行它。要运行应用,需要在设备上手动启动安装的应用。