2015-08-17 76 views
0

在phonegap應用程序中,設備是在通過PhoneGap Desktop運行時定義的。但是,如果它是通過build.phonegap在線構建的,那麼它沒有被定義。使用build.phonegap時「設備未定義」

在build.phonegap中,在插件下,它顯示了在config.xml文件(例如,)中定義的核心插件都在那裏。但任何嘗試訪問設備的行都會收到「設備未定義」錯誤,而使用PhoneGap Desktop時不會發生此錯誤。

對於PhoneGap Desktop,我發現祕密是將腳本引用添加到cordova.js。但這顯然不適用於build.phonegap。我也試着給phonegap.js添加一個類似的參考,但沒有結果。

PS:另一條信息。爲了進一步調試,我嘗試使用設備在「if」塊中檢查設備是否準備就緒。因此,在PhoneGap Desktop上,deviceready事件觸發了,但在build.phonegap上,它從未準備好。

bindEvents: function() { 
    document.addEventListener('deviceready', this.onDeviceReady, false); 
}, 
onDeviceReady: function() { 
    app.readyNow = true; 
    app.receivedEvent('deviceready'); 
}, 

... 

if(app.readyNow) { 
    //Code to use device object. Fires with PhoneGap Desktop, not in PhoneGap Build 
} 

回答

0

我通過比較由PhoneGap Desktop自動生成的Hello World應用程序和略有不同但存在問題的應用程序來找出答案。所以答案就是將腳本引用放到HTML中的body下方,而不是頭部,並確保沒有對phonegap.js的引用。 (如果有phonegap.js,它會抱怨NPObject,而如果cordova.js在頭部,設備永遠不會準備好。)這解決了我的問題。