Android上的掌声和Phonegap

我的问题是关于使用Eclipse Applaud插件的PhoneGap和Android开发。 我成功下载并安装了Applaud插件。 我可以使用Applaud向导(通过Eclipse工具栏图标)创建一个新项目,并且演示在设备上运行正常。 但是,当我覆盖现有的html&js(仅限main.js,而不是phonegap.js)文件,然后将其构建到设备,非设备function正常工作(按钮点击/ ui更新/等),但PhoneGap命令例如(device.version / device.platform / etc)似乎不起作用。

我已经尝试将其挂钩到onDeviceReady事件中,并确保包含.jar库,但我仍然遇到同样的问题。 所以我想我的问题是; 在使用Applaud创建PhoneGap解决方案时,Eclipse是否需要编译和库,例如PhoneGap? 如果是这样,有人会怎么做这样的事情?

错误日志:

01-24 14:59:44.567: W/KeyCharacterMap(5453): No keyboard for id 131074 01-24 14:59:44.567: W/KeyCharacterMap(5453): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 01-24 14:59:59.917: I/Web Console(5453): Failed to run constructor: TypeError: object is not a function at file:///android_asset/www/resources/js/phonegap-1.3.0.js:210 01-24 14:59:59.927: I/Web Console(5453): Failed to run constructor: TypeError: Cannot read property 'capture' of undefined at file:///android_asset/www/resources/js/phonegap-1.3.0.js:210 01-24 14:59:59.927: I/Database(5453): sqlite returned: error code = 14, msg = cannot open file at source line 25467 01-24 15:00:00.057: D/dalvikvm(5453): GC_CONCURRENT freed 1185K, 55% free 3188K/6983K, external 2630K/2814K, paused 2ms+3ms 

所以我回来并以某种方式解决了我的问题(很可能是运气)。 当我开始这个项目时,我认为最好的方法是使这个应用程序尽可能模块化; 每个function(Web请求,文件读/写等)彼此分离。 因此,我创建了许多单独的js文件,每个文件都标有相应的名称(网络,设备,语言等),然后将它们包含在我的index.html页面中,然后通过phonegap运行。

在其中一些文件中,我采用了以下方法:

 var Device = { // Returns the Device Name as a string. Name: function() { return window.device.name; } }; 

结果,我可以使用点运算符(我更喜欢)访问此function。 但是,通过这样做,导致许多文件依赖于另一个,从而难以追踪我的问题。 在花了一些时间评论和取消评论function后,似乎使用了上述方法(点运算符)和我选择的命名约定。 上面的Device.Name()实现似乎(不完全确定为什么/如何)与PhoneGap库冲突,从而导致设备上的js错误。

将上述名称从“设备”更改为“手机”后,我的问题就消失了。 一个简单而明显的解决方案来度过一个痛苦的下午。

我会回答你的问题,但我不认为这是你的问题:

AppLaud向导是否仅使用phonegap.jar或重建其组件取决于您使用项目创建向导的方式。

如果您使用其“内置Phonegap”或指向下载的官方版本(“输入安装的PhoneGap的路径”),它将只指向该版本的phonegap.jar。 如果您指向具有解压缩的github PhoneGap版本的目录,则不会使用phonegap.jar,并且PhoneGap Java源代码将内置到您的项目中。 这样可以轻松调试PhoneGap实现。

关于你的问题,你的index.html文件可能有问题,比如错误的phonegap {…}。js。 正如ghostCoder在评论中所说,您可能需要共享您的代码以获得帮助。