在手机差距应用中,如果通过PhoneGap桌面运行,则会定义设备。但是,如果它是通过build.phonegap在线构建的,那么它就没有定义。
在build.phonegap中,在插件下,它显示config.xml文件中定义的核心插件(例如)都在那里。但是任何试图访问设备的线路都没有定义"设备未定义"错误,而使用PhoneGap桌面时不会发生此错误。
对于PhoneGap Desktop,我发现秘诀是添加一个脚本引用到cordova.js。但显然,这对于build.phonegap来说并不起作用。我也尝试添加一个类似的参考phonegap.js,但没有结果。
PS:另一条信息。为了进一步调试,我尝试使用设备在" if"中进行包装。阻止检查设备是否准备就绪。因此,在PhoneGap桌面上,已经触发了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 :(得分:0)
我通过比较PhoneGap Desktop自动生成的Hello World应用程序和稍有不同但有问题的Hello World应用程序来找出答案。所以答案是将脚本引用将cordova.js放在HTML中的正文中,而不是放在头部,并确保没有对phonegap.js的引用。 (如果有一个phonegap.js,它会抱怨NPObject,而如果cordova.js在head部分,设备将永远不会准备好。)这解决了我的问题。