2012-02-01 83 views
0

嗨,大家好,我通过这个教程运行运行煎茶触摸/ PhoneGap的示例代码:问题在Android

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控制台(16659):未捕获的ReferenceError:设备未在文件中定义:///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设置,但它没有给我任何有用的信息,只说明 “出现错误:[unknown filename]:[unknown lineno]:[unknown message]”

+1

是否有任何阻止Viewport启动等待phonegap加载的原因? – 2012-02-01 15:23:09

+0

视口包含依赖于PhoneGap API可用的代码,因此在加载PhoneGap之前它会被阻止。 – 2012-02-01 16:22:44

+1

你总是可以延迟调用Ext.regApplication直到phonegap加载。这将避免这里需要的怪异启动逻辑。它可能会慢一点,但我怀疑慢了多少,特别是如果你已经包含了sencha-all。它可能不到10ms。 我在JS连接中玩了一段时间,并且在组合20个JS文件后只能保存<10ms,所以我不知道这样的性能优化有多少。 – 2012-02-02 01:29:34

回答

0

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

1

我很确定“app”与PhoneGap中的App类冲突,可以在navigator.app中访问。尝试将名称更改为“myapp”并查看它是否修复了您的问题。

+0

感谢Simon的回应。我做了这个改变,不幸的是它没有任何区别。 – 2012-02-02 08:26:16

+0

奇怪的是,我刚刚重新阅读了教程,看起来在app.js的第8行,您应该已经从PhoneGap收到了deviceready事件,因此navigator.device应该存在。你有一个设备准备好的事件监听器吗? – 2012-02-02 17:25:03

0

我有类似的问题,但只有当包含JS文件weinre工作时才会发生。如果你在我的设置中删除它,它会加载应用程序。不知道为什么,现在正在寻找它,因为它需要我们帮助进行调试!