2012-01-24 28 views
5

我的問題是關於使用Eclipse Applaud插件的PhoneGap和Android開發。我成功下載並安裝了Applaud插件。我可以使用Applaud嚮導(通過Eclipse工具欄圖標)創建一個新項目,並且演示在設備上運行良好。但是,當我覆蓋現有的html & js(僅main.js,而不是phonegap.js)文件,然後將其構建到設備中時,非設備功能正常工作(按鈕點擊/ ui update/etc),但PhoneGap命令如(device.version/device.platform/etc)似乎不起作用。Android上的讚揚和Phonegap

我已經嘗試將此掛鉤到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 
+0

是否將插件添加到plugins.xml文件? – ghostCoder

+0

是被激發的onDeviceReady事件? – ghostCoder

+0

是的,插件文件也在root/res/plugins.xml中。我在運行時登錄了設備,並且似乎得到了以下輸出:I/Web Console(4894):無法運行構造函數:TypeError :object不是file:///android_asset/www/resources/js/phonegap-1.3.0中的函數。js:210I/Web控制檯(5109):無法運行構造函數:TypeError:無法讀取屬性'capture'undefined在file:///android_asset/www/resources/js/phonegap-1.3.0.js:210 I /數據庫(5109):sqlite返回:錯誤代碼= 14,msg =無法在源代碼行打開文件25467 – JohnHodkinson

回答

3

所以我回來了,不知怎的解決了我的問題(很可能是運氣)。當我開始這個項目時,我認爲最好的方法是使這個應用程序儘可能模塊化;每個功能(網絡請求,文件讀取/寫入等)彼此分開。因此,我創建了許多單獨的js文件,每個文件都標有適當的名稱(網絡,設備,語言等),然後將它們包含在我的index.html頁面中,然後通過phonegap運行。

在某些文件,我採取了以下做法:

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

結果,然後我可以訪問使用點運算符(我喜歡)這個功能。然而,這樣做導致許多文件依賴於另一個文件,因此很難追查我的問題。花了一些時間評論和取消註釋功能後,似乎通過使用上述方法(點運算符)和我對命名約定的不好選擇的組合。上面的Device.Name()實現似乎(不完全確定爲什麼/如何)與PhoneGap庫衝突,從而導致設備上出現js錯誤。

將上述名稱從「設備」更改爲「手機」後,我的問題就消失了。一個簡單的,也許明顯的解決方案,一個痛苦的下午。

+0

聽我剛剛有同樣的問題。當你導入一個項目或者創建一個新的腳本標籤來加載phonegap js api的時候,這個腳本已經完成了。只要你不需要它。你只需要取消註釋該行。 –

+0

phonegap.js定義了一個Device對象,它具有特定於設備的屬性 - 它將與上面的對象發生衝突,並可能導致它無法工作 –

1

我會回答你的問題,但我不認爲這是你的問題:

無論是否鼓掌嚮導,您只需使用phonegap.jar或重建其組件取決於您如何使用項目創建嚮導。

如果您使用其「內置Phonegap」或指向下載的正式版本(「輸入安裝的PhoneGap的路徑」),它將指向該版本的phonegap.jar。如果您指向一個帶有解壓縮github PhoneGap版本的目錄,則不會使用phonegap.jar,並且PhoneGap Java源將內置到您的項目中。這使得PhoneGap實現的調試變得容易。

關於您的問題,您的index.html文件可能有問題,例如電話拼寫錯誤{...} .js。正如ghostCoder在評論中所說的,您可能需要分享您的代碼才能獲得幫助。