本文承接上篇《Cordova开发技巧》。
之前的所有例子用到的平台主要是Android,本次详细说明一下在Cordova框架中开发Android应用的过程。它和一般的Android应用开发类似,如果是Android开发者基本可以跳过不看,另外需要在其他平台中开发暂请参考Cordova和相关平台开发的文档和参考资料。
Google为Android开发者提供了一套强大的平台开发工具,虽然Cordova CLI包揽了大部分创建、管理、测试应用的工作,但调试应用遇到问题时,想要知道更多的信息还是要借助ADT。下面说明如何配置ADT并用它测试和调试Cordova应用。如果只是使用CLI或者PhoneGap Build构建和测试应用,这部分就可以略过不看了。另外现在Google有自家的Android开发工具Android Studio,建议有条件还是改用它吧。
用Android开发工具(ADT)开发
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平台交互的工具之一。
使用ADT IDE
打开Android SDK文件夹中的Eclipse文件夹的Eclipse就启动了ADT。截图如下:
处理ADT IDE的内存问题
有时在打开Cordova项目或向Eclispe安装插件时会出现IDE崩溃的情况。默认情况下,Eclipse配置使用有限的内存,崩溃有时就是因为没有足够的内存。
有几种方法增加Eclipse不同部分的可用的内存。可以在Eclipse启动时以命令行选项的形式传递内存配置设置,或者简单的对eclipse.ini做一些改动。用后一种方法,打开eclipse.ini,修改如下几处内存设置。如果还有问题,试着增加直到问题消失。
...
--launcher.XXMaxPermSize
256m
...
-Xms512m
-Xmx1024m
编辑Cordova应用内容文件
Android应用使用Java语言,ADT中也没有专门设计用来调试运行在Cordova容器中的Web应用的工具。因此也不能按步调试JavaScript代码、设置断点、配置监视表达式,这里最好还是用上一篇讲到调试方法。但之后也会使用ADT的一些工具进行调试。
编辑Cordova应用的web内容有一些优秀的编辑器,如果要使用ADT编辑Cordova应用的内容就需要安装web编辑功能。具体方法是打开Help菜单,选择"New Software会显示安装向导,在其中的Work With下拉列表中选择Juno选项,选好后下面会显示一个选项列表,拖动找到Eclipse Web Developer Tools,选中后一路点击完成安装。
导入Cordova项目
在导入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文件夹中的复制工作。
运行Cordova应用
导入后就可以运行项目了,ADT没有为Android应用设置默认的运行配置,需要自行添加。在ADT中,打开Run菜单,选择Run Configurations,在弹出的对话框中选择Android Applications,点击New按钮(如图中标识处),指定一个应用,设定一个或多个启动模拟器的参数,如果没有定义模拟器,点击Manage按钮打开Android虚拟设备(AVD)管理器创建和管理一个模拟器。
一个或多个运行配置定义完成后,点底部的Run按钮加载模拟器运行应用。也可以关闭对话框在Run菜单上选择或右键单击项目,选择Run As然后选择Android Application。ADT就会加载选中的模拟器,然后编译、打包和部署应用。
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,可以在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。