【问题标题】:Problems running Sencha Touch / PhoneGap example code on android在 Android 上运行 Sencha Touch / PhoneGap 示例代码时出现问题
【发布时间】:2012-02-01 15:13:27
【问题描述】:

大家好,我正在学习本教程:

http://www.sencha.com/learn/a-sencha-touch-mvc-application-with-phonegap

并尝试让代码在 Android 上运行。我设置了 Eclipse 并针对 Android 2.3.3

我已经从 Git 下载了最终代码,但我不断收到错误消息(在 LogCat 中):

02-01 14:59:08.709: E/Web Console(16659): Uncaught ReferenceError: device is not defined at file:///android_asset/www/app/app.js:8

有问题的代码是:

Ext.regApplication({
    name: 'app',
    launch: function() {
        this.launched = true;
        this.mainLaunch();
    },
    mainLaunch: function() {
        if (!device || !this.launched) {return;}
        this.views.viewport = new this.views.Viewport();
    }
});

无论是在模拟器还是物理设备上运行,我都会遇到同样的错误。我已经设置了 Weinre,但它没有给我任何有用的信息,只是说明 “发生错误:[未知文件名]:[未知行号]:[未知消息]”

【问题讨论】:

  • 您是否有任何理由阻止 Viewport 启动等待 phonegap 加载?
  • 视口包含的代码依赖于可用的 PhoneGap API,因此在加载 PhoneGap 之前它会被阻止。
  • 你总是可以推迟调用 Ext.regApplication 直到 phonegap 加载。这将避免此处所需的奇怪启动逻辑。它可能会慢一点,但我质疑 多少 慢,特别是如果你已经包含了 sencha-all。它可能小于 10 毫秒。玩了一会儿JS拼接,合并20个JS文件后只能节省
  • 谢谢 Stefan 你有任何示例代码吗?

标签: android cordova sencha-touch


【解决方案1】:

我很确定“app”与 PhoneGap 中的 App 类冲突,该类可在 navigator.app 中访问。尝试将名称更改为“myapp”,看看是否能解决您的问题。

【讨论】:

  • 感谢西蒙的回复。我做了这个改变,不幸的是它没有任何区别。
  • 多么奇怪,我刚刚重新阅读了教程,似乎在 app.js 的第 8 行,您应该已经收到了来自 PhoneGap 的 deviceready 事件,所以 navigator.device 应该存在.你有设备就绪的事件监听器吗?
【解决方案2】:

同样的事情发生在我身上。将<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 添加到AndroidManifest.xml,它应该会消失。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题,但仅在包含 JS 文件以使 weinre 工作时才会发生。如果您在我的设置中删除它,它会很好地加载应用程序。不知道为什么,目前正在寻找修复它,因为当然需要帮助调试!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      相关资源
      最近更新 更多