Android:5秒后Deviceready尚未解雇

时间:2016-11-01 01:24:04

标签: cordova cordova-plugins

将Cordova更新到v6.4.0并将Android平台更新到6.0.0后,我的应用程序不再工作了。我明白了:

Traceback (most recent call last):
  File "fcc.py", line 34, in <module>
    zip_file_object = zipfile.ZipFile(file_handle)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py", line 770, in __init__
    self._RealGetContents()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py", line 807, in _RealGetContents
    endrec = _EndRecData(fp)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py", line 208, in _EndRecData
    fpin.seek(0, 2)
AttributeError: addinfourl instance has no attribute 'seek'

我尝试删除所有插件并逐个添加。我发现这是cordova-plugin-device和cordova-plugin-network-information的一个问题。我的所有插件都是最新的

11 个答案:

答案 0 :(得分:9)

如果您恰好在应用中运行Crosswalk插件,我只是确认卸载并重新安装;

cordova plugin add https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview

摆脱

deviceready has not fired after 5 seconds. cordova.js:1223 Channel not fired: onCordovaInfoReady cordova.js:1216 Channel not fired: onCordovaConnectionReady cordova.js:1216

您可以在此处查看Crosswalk的Jira问题列表中的问题。

https://crosswalk-project.org/jira/browse/XWALK-7422

答案 1 :(得分:4)

这应该在cordova-android 6.1.0中修复。它尚未添加到npm-registry中,因此您可以将它放在config.xml中来使用它:

<engine name="android" spec="https://github.com/apache/cordova-android.git#6.1.0"/>

答案 2 :(得分:3)

解决方案:

拨打电话&#34; cordova.js&#34;到页面的最后一行。

<script type="text/javascript" src="cordova.js"></script>
</body>
</html>

...问候语

答案 3 :(得分:2)

我最近在iOS上遇到过同样的问题。最终对我有用的是remove平台的简单addios

cordova platform remove ios
cordova platform add ios

自从我完全重建ios平台以来已经有一段时间了,就像你一样,我在那段时间做了其他重大改变(Cordova升级,XCode升级等)。我的理论是我的config.xml或现有ios版本在某种程度上不符合最新的Cordova要求。执行platform removeplatform add将清除构建文件并更新config.xml

我怀疑这适用于OP,但对于遇到同样问题的其他人,请确保您已在cordova.js文件中加入index.html。如果您还没有这样做,请添加以下行:

<script src="cordova.js"></script>

刚开始使用科尔多瓦时,这是一个非常常见的遗漏。

答案 4 :(得分:0)

对于那些不想降级Cordova的人(比如我),请按照我的指南(我在一整天的努力后成功做到了):

  • 备份您当前的(cordova root,而不是平台/ android)项目。
  • 从root用户打开cordova CLI:cordova platform remove android

  • 删除后:cordova platform add android。您的包项目(结构)文件夹保留,所以不用担心。

  • cordova plugin ls然后删除每个cordova插件execpt Notfication和Whitelist(Cordova的默认安装插件)。
  • 使用cordova plugin add <plugin-id>逐个添加使用的插件。
  • 返回备份文件夹:克隆AndroidManifest.xml以及app/src/main中的所有内容。其中包括:资产 java 图书馆资源。您只需要(实际上我建议)遗漏的一个文件是 res / xml / config.xml 克隆此内容。让科尔多瓦稍后建造。

  • Cordova CLI(来自root cordova项目,而非平台/ android):cordova build android

  • 如果您有任何第三方插件,或使用不同的内容src,属性,请将它们(功能,内容src,作者,...)复制回app/src/main/res/xml/config.xml。科尔多瓦无法检测到你的第三个插件
  • 打开Android Studio,导入&#34;修复&#34;项目 - &gt;制作项目,然后运行App。享受!

答案 5 :(得分:0)

确保在index.html正文底部包含cordova.js

永远不要忘记必须位于type="text/javascript"

之前的src=""
<!DOCTYPE html>
<html>
    <head></head>
    <body>
        ...
        <script type="text/javascript" src="cordova.js"></script>
    </body>
</html>

还在html头上包含此元标记

<meta http-equiv="X-UA-Compatible" content="IE=edge">

然后删除当前安装的平台,然后重新添加

cordova platform remove android
cordova platform remove browser
cordova platform remove ios

cordova platform add android
cordova platform add browser
cordova platform add ios

提供服务然后刷新浏览器或构建它

如果这不能解决您的问题,请尝试逐个删除一些插件或删除您的脚本以找出错误..

答案 6 :(得分:0)

我正在运行Visual Studio并在Chrome模拟器中出现此错误。我发现启动Web Inspector会允许Visual Studio提示各种插件所要求的一些钩子,点击各种弹出窗口让我超越了这个。它必须与Visual Studio设置Cordova插件模拟的方式有关,但是在我的设置中,它被阻止显示弹出窗口。

答案 7 :(得分:0)

我不知道这个问题的真正原因, 但是我尝试从插件列表中删除cordova-plugin-whitelistcordova-plugin-device并再次添加。 幸运地解决了这个问题,

答案 8 :(得分:0)

如果您正在iphone上进行测试,则问题与 Content-Security-Policy,要么将其删除,要么更改规则以使其可以运行!

还要确保将cordova.js添加到html文件的末尾。

<script type="text/javascript" src="cordova.js"></script> 
</body>
</html>

答案 9 :(得分:0)

如果这仍然与任何人有关:

对我有用的是删除然后再添加一个插件,即“ katzer cordova-plugin-local-notifications”。

答案 10 :(得分:0)

就我而言,我的工作项目突然停止并显示上述错误

我的项目开始工作

1。卸载手机调试api

2。清除项目文件夹

安卓用户

cd android
./gradlew clean

gradlew clean

iOS 用户

cd ios
xcodebuild clean