本文承接上篇《Cordova开发技巧》。
之前的所有例子用到的平台主要是Android,本次详细说明一下在Cordova框架中开发Android应用的过程。它和一般的Android应用开发类似,如果是Android开发者基本可以跳过不看,另外需要在其他平台中开发暂请参考Cordova和相关平台开发的文档和参考资料。
Google为Android开发者提供了一套强大的平台开发工具,虽然Cordova CLI包揽了大部分创建、管理、测试应用的工作,但调试应用遇到问题时,想要知道更多的信息还是要借助ADT。下面说明如何配置ADT并用它测试和调试Cordova应用。如果只是使用CLI或者PhoneGap Build构建和测试应用,这部分就可以略过不看了。另外现在Google有自家的Android开发工具Android Studio,建议有条件还是改用它吧。
ADT附加在预配置的开源Eclipse上,用它可以编辑、编译、运行和调试Android的Java应用,可以在Android开发者网站( http://developer.android.com/sdk/index.html )上了解更多或者下载。如果已经在使用Eclispe开发,可以按照如下网址的说明添加ADT: http://developer.android.com/sdk/installing/installing-adt.html 。注意ADT和Eclipse的兼容。
ADT也有命令行工具用来和设备或模拟器交互,它也是Cordova CLI用来和Android平台交互的工具之一。
打开Android SDK文件夹中的Eclipse文件夹的Eclipse就启动了ADT。截图如下:
有时在打开Cordova项目或向Eclispe安装插件时会出现IDE崩溃的情况。默认情况下,Eclipse配置使用有限的内存,崩溃有时就是因为没有足够的内存。
有几种方法增加Eclipse不同部分的可用的内存。可以在Eclipse启动时以命令行选项的形式传递内存配置设置,或者简单的对eclipse.ini做一些改动。用后一种方法,打开eclipse.ini,修改如下几处内存设置。如果还有问题,试着增加直到问题消失。
... --launcher.XXMaxPermSize 256m ... -Xms512m -Xmx1024m
Android应用使用Java语言,ADT中也没有专门设计用来调试运行在Cordova容器中的Web应用的工具。因此也不能按步调试JavaScript代码、设置断点、配置监视表达式,这里最好还是用上一篇讲到调试方法。但之后也会使用ADT的一些工具进行调试。
编辑Cordova应用的web内容有一些优秀的编辑器,如果要使用ADT编辑Cordova应用的内容就需要安装web编辑功能。具体方法是打开 Help 菜单,选择" New Software 会显示安装向导,在其中的 Work With 下拉列表中选择 Juno 选项,选好后下面会显示一个选项列表,拖动找到 Eclipse Web Developer Tools ,选中后一路点击完成安装。
在导入Cordova项目之前使用 prepare 命令确保Web内容从www文件夹复制到Anroid项目文件夹中。打开ADT的 File 菜单,选择 Import ,显示导入向导。展开 Android 选项并选择 Existing Android Code Into Workspace ,点下一步。向导下一页指定 Root Directory 即项目根目录,向导自动添加Cordova项目到可用工程列表。截图如下:
导入后的项目结构包括原生的Java Android应用和在应用内执行的web内容,即默认的Android项目结构和Cordova www文件夹。
在Android项目的www文件夹中对web内容作修改并不会反映Cordova项目根目录的www文件夹中,Cordova并没有这样一种同步机制。调试过程中对web内容作了修改,需要手动复制。方便起见,可以添加一个外部工具用来处理向Cordova www文件夹中的复制工作。
导入后就可以运行项目了,ADT没有为Android应用设置默认的运行配置,需要自行添加。在ADT中,打开 Run 菜单,选择 Run Configurations ,在弹出的对话框中选择 Android Applications ,点击 New 按钮(如图中标识处),指定一个应用,设定一个或多个启动模拟器的参数,如果没有定义模拟器,点击 Manage 按钮打开Android虚拟设备(AVD)管理器创建和管理一个模拟器。
一个或多个运行配置定义完成后,点底部的 Run 按钮加载模拟器运行应用。也可以关闭对话框在 Run 菜单上选择或右键单击项目,选择 Run As 然后选择 Android Application 。ADT就会加载选中的模拟器,然后编译、打包和部署应用。
ADT有监视在模拟器或设备上活动的工具,即 Console 和 Logcat 视图。Logcat是IDE的一部分,但可以通过命令行运行或作为一个独立的工具运行。如果不小心关闭了Logcat可以在 Window 菜单的 Show View 中选择 Other ,ADT IDE会显示对话框,在列表中选择Logcat。
console 窗口显示了由ADT在准备Cordova应用并部署到模拟器上时产生的信息。如果ADT在构建、打包和部署应用时遇到问题就通过 console 显示出来。
Logcat 则直接同Android模拟器或设备交互,在模拟器完成启动过程后,同Android系统交互时 Logcat 窗口会显示大量消息。使用模拟器或设备运行应用遇到问题时可以在其中查找错误信息。
之前我们讲过通过Cordova应用向 console 对象写信息;就Android来说这些 console 对象消息显示在 Logcat 窗口中。
在 Logcat 窗口中可以按照消息类型过滤消息。如下图所示,注意右上角的 debug 按钮点击可以按消息级别筛选。
如果不想用ADT,可以在IDE外部运行ADT调试工具。独立的Logcat和相关工具可以在Android Debug Monitor(ADM)工具中找到,而ADM是由Android SDK Tools文件夹中的monitor.bat启动的。
ADM窗口如下图,提供许多有用的信息,其中就有Logcat窗口。
从模拟器或设备上抓屏虽然不是很要紧的功能但有时很有用。上图ADM窗口中的左上角的 Device 区可以看见小相机图标。设备连接后可以点击它抓取屏幕。点击后会出现一个窗口,上面有 refresh 、 rotate 、 save 和 copy 按钮。它在写文档或支持工作时能提供快速简单的屏幕图像。
ADM也可以与物理设备交互,在应用发布前还是应该在典型的样机上测试。首先要用USB线把设备和PC连接,记得打开设备上的USB调试,怎么打开因设备而异。一些设备中启用开发者选项只需要在Android的设置上选择。另一些可能会复杂些请自行查找原因。
在设备上测试前有时还要解决识别问题。像三星设备可能要求安装驱动;有时要在SDK模拟器上安装Google USB驱动。
接下来再说说PhoneGap buid。