5

我的问题是关于使用 Eclipse Applaud 插件的 PhoneGap 和 Android 开发。我成功下载并安装了 Applaud 插件。我可以使用 Applaud 向导(通过 Eclipse 工具栏图标)创建一个新项目,并且演示可以在设备上正常运行。但是,当我覆盖现有的 html 和 js(仅 main.js,而不是 phonegap.js)文件,然后将其构建到设备时,非设备功能可以正常工作(按钮单击/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
4

2 回答 2

3

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

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

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

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

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

于 2012-01-25T11:05:35.837 回答
0

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

AppLaud 向导是仅使用 phonegap.jar 还是重建其组件取决于您如何使用项目创建向导。

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

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

于 2012-01-24T16:08:18.570 回答