Cordova 3.5 deviceready 事件在 5 秒后未触发
Posted
技术标签:
【中文标题】Cordova 3.5 deviceready 事件在 5 秒后未触发【英文标题】:Cordova 3.5 deviceready event not fired after 5 seconds 【发布时间】:2014-08-28 18:04:42 【问题描述】:我最近将我的 cordova 应用程序从 cordova v2.9 升级到了 v3.5.0。从命令行添加插件后,我将我的应用程序导入到 eclipse 中,以便我可以在 android 设备上进行测试。但是,当我运行该应用程序时,我会看到以下 logcat 消息:
07-08 11:24:03.359: I/Web Console(1500): deviceready has not fired after 5 seconds. at file:///android_asset/www/cordova/cordova.js:1154
07-08 11:24:03.359: D/CordovaLog(1500): file:///android_asset/www/cordova/cordova.js: Line 1147 : Channel not fired: onFileSystemPathsReady
07-08 11:24:03.359: I/Web Console(1500): Channel not fired: onFileSystemPathsReady at file:///android_asset/www/cordova/cordova.js:1147
根据Cordova Device ready doc,我必须在document.ready()
中绑定deviceready
。它没有开火。根据 SO 上的一些答案,还尝试将其绑定到 document.ready()
之外。仍然没有运气。谁能帮帮我???
设备就绪事件绑定
function cordovaInit()
document.addEventListener('deviceready', initApp, false);
我从body元素的onload()
调用cordovaInit()
,如下所示:
<body onload="cordovaInit()">
deviceready 问题现在已经消失,但我收到如下 Nullpointer 异常:
07-08 18:58:40.750: W/System.err(6670): java.lang.NullPointerException
07-08 18:58:40.750: W/System.err(6670): at org.apache.cordova.file.LocalFilesystem.filesystemPathForURL(LocalFilesystem.java:67)
07-08 18:58:40.750: W/System.err(6670): at org.apache.cordova.file.LocalFilesystem.getFileForLocalURL(LocalFilesystem.java:189)
07-08 18:58:40.750: W/System.err(6670): at org.apache.cordova.file.FileUtils.getFile(FileUtils.java:749)
07-08 18:58:40.760: W/System.err(6670): at org.apache.cordova.file.FileUtils.access$5(FileUtils.java:742)
07-08 18:58:40.760: W/System.err(6670): at org.apache.cordova.file.FileUtils$16.run(FileUtils.java:397)
07-08 18:58:40.760: W/System.err(6670): at org.apache.cordova.file.FileUtils$23.run(FileUtils.java:525)
07-08 18:58:40.760: W/System.err(6670): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-08 18:58:40.760: W/System.err(6670): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-08 18:58:40.760: W/System.err(6670): at java.lang.Thread.run(Thread.java:856)
【问题讨论】:
您能否发布您的代码。 你想要代码的哪一部分?我绑定 deviceready 事件的代码?? 是的,绑定 deviceready 事件的代码 编辑了问题并添加了绑定deviceready
事件的代码
您是否添加了device
插件?之后您是否重新构建了应用程序?
【参考方案1】:
同样的问题。尝试删除/更新文件插件,(org.apache.cordova.file) 它对我有用。 OnFileSystemReady 是该插件的一个事件。
【讨论】:
【参考方案2】:我发现了其他东西,尝试在你的模拟器中添加一个 sdcard
我发现我最初的错误是不允许文件插件访问文件空间,这是因为它在模拟器中不存在,我在模拟器定义中添加了一个外部卡,嘿,它工作了
【讨论】:
【参考方案3】:通过卸载cordova.file插件(以及所有使用它的插件)、卸载平台、升级cordova到v4并重新安装所有插件解决了同样的问题
【讨论】:
【参考方案4】:只是想补充一下,我今天在使用 cordova 4.0.0 时遇到了这个问题 我怀疑这不仅仅发生在文件插件上,因为我的问题出在网络信息插件(org.apache.cordova.network-information)
背景故事:我已将项目复制到一个新文件夹并复制到 plugins/
目录(我知道不要从以前的错误中复制 platforms
)。这使得应用程序正确加载 chrome 并正确构建,但在我的设备上显示白屏。通过转到chrome://inspect/#devices
并查看控制台日志进行调试,我发现这是因为设备就绪事件在 5 秒后没有触发。
修复:我删除了带有 cordova plugin remove org.apache.cordova.network-information
的插件并使用 cordova plugin add org.apache.cordova.network-information
重新添加了它
【讨论】:
以上是关于Cordova 3.5 deviceready 事件在 5 秒后未触发的主要内容,如果未能解决你的问题,请参考以下文章
Ionic + cordova-sqlite-storage + deviceready = 过渡时没有渲染?
在 Cordova 3.2.0 中未触发 deviceready 事件
Cordova iOS deviceready 永远不会触发