【问题标题】:Cordova not firing deviceready after update from 3.3.0 to 3.6.4从 3.3.0 更新到 3.6.4 后,Cordova 未准备好触发设备
【发布时间】:2015-01-30 19:16:51
【问题描述】:

我有一个适用于 android 的 cordova + jquerymobile 应用程序,其中包含原生插件列表。 一切都很好,直到我使用“cordova platform update adnroid”命令将 cordova 从 3.3.0 更新到 3.6.4。 在此更新之后,cordova 不会在某些设备上触发 deviceready 事件。

我已经对类似问题的 stackoverflow 进行了研究,但没有发现任何可以帮助我的东西。

有什么想法吗? txh 提前寻求帮助

【问题讨论】:

    标签: javascript android cordova jquery-mobile


    【解决方案1】:

    当您查看日志时,您可能会看到如下内容:

    D/CordovaLog( 3770): file:///android_asset/www/cordova.js: Line 512 : Uncaught TypeError: Cannot set property connection of #<a Navigator> which has only a getter
    

    excpetion 没有被捕获,所以这就是故事的结尾。 修复非常简单,并已提交下一个版本。

    我手动应用了差异,它似乎工作。我能够与我的一位受影响的用户确认该应用现在可以正常运行。

    diff --git a/src/common/builder.js b/src/common/builder.js
    index 826820d..75d3ea7 100644
    --- a/src/common/builder.js
    +++ b/src/common/builder.js
    @@ -31,9 +31,14 @@ function each(objects, func, context) {
    
     function clobber(obj, key, value) {
         exports.replaceHookForTesting(obj, key);
    -    obj[key] = value;
    +    var needsProperty = false;
    +    try {
    +        obj[key] = value;
    +    } catch (e) {
    +        needsProperty = true;
    +    }
         // Getters can only be overridden by getters.
    -    if (obj[key] !== value) {
    +    if (needsProperty || obj[key] !== value) {
             utils.defineGetter(obj, key, function() {
                 return value;
             }); 
    

    有关详细信息,请参阅这两个链接,其中提供了所有详细信息。基本上,为支持 iOS8 添加了一些代码,它对某些版本的 android 有不良的副作用。

    1. https://issues.apache.org/jira/browse/CB-7868
    2. TypeError "Cannot set property connection of #<Navigator>" in console when upgrading project to latest version of Cordova 4.0.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多