我最近将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 ,我必须在deviceready
内绑定document.ready()
。它没有开火。还尝试根据SO上的一些答案将其绑定到document.ready()
之外。仍然没有运气。有人可以帮我吗???
设备就绪事件绑定
function cordovaInit() {
document.addEventListener('deviceready', initApp, false);
}
我从身体元素的cordovaInit()
拨打onload()
,如下所示:
<body onload="cordovaInit()">
现在设备问题已经消失,但我得到的是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)
答案 0 :(得分:2)
同样的问题。尝试删除/更新File插件,(org.apache.cordova.file) 它对我有用。 OnFileSystemReady是该插件的一个事件。
答案 1 :(得分:0)
我找到的其他内容,尝试在模拟器中添加sdcard
我发现我的初始错误是文件插件不允许访问文件空间,这是因为它没有存在于模拟器中,我在模拟器定义中添加了一个外部卡,并且嘿presto它工作
答案 2 :(得分:0)
通过卸载cordova.file插件(以及使用它的所有plaugins)解决了同样的问题,卸载平台,将cordova升级到v4并安装所有插件
答案 3 :(得分:0)
只是想添加我今天遇到的问题与cordova 4.0.0 我怀疑这不仅仅是File插件,因为我的问题是网络信息插件(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