2012-02-01 86 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工作時纔會發生。如果你在我的設置中刪除它,它會加載應用程序。不知道爲什麼,現在正在尋找它,因爲它需要我們幫助進行調試!