科尔多瓦在从 3.3.0 更新到 3.6.4 后未启动设备准备就绪

Cordova not firing deviceready after update from 3.3.0 to 3.6.4

本文关键字:启动 准备就绪 更新      更新时间:2023-09-26

我有一个适用于Android的cordova + jquery移动应用程序,其中包含本机插件列表。一切都很好,直到我使用"cordova 平台更新 adnroid"命令将 cordova 从 3.3.0 更新到 3.6.4。在此更新之后,Cordova在某些设备上未触发设备就绪事件。

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

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

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

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

脱没有被抓住,所以故事就到此为止了。该修复非常简单,并已提交到下一个版本。

我手动应用了差异,它似乎有效。 我能够与受影响的一位用户验证该应用程序现在是否正常运行。

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. 类型错误"无法在控制台中设置 # 的属性连接"将项目升级到最新版本的 Cordova 4.0.0 时