【问题标题】:IBM Worklight 6.0 - How to include Dojo patch with pre-built Dojo layers?IBM Worklight 6.0 - 如何在预先构建的 Dojo 层中包含 Dojo 补丁?
【发布时间】:2013-07-06 19:26:38
【问题描述】:

使用 Dojo 1.9 开发 Worklight 6.0 应用程序时,我们在运行 Android v4.1.2 的 Galaxy SII、SIII、Note 设备上遇到了一些页面导航问题(非常常见)。

我们看到这些问题已解决by Dojo patch #17164
此补丁不包含在 Worklight 的默认 Dojo 构建中。

我们试图通过将文件放在项目的 dojox\mobile 文件夹中来包含它,但没有任何效果 - 我们猜测它在构建期间被未修补的类覆盖。

还有其他方法可以包含/定义这个补丁吗? 我们更愿意避免自己定制构建 Dojo 以跟上 WL 版本。

【问题讨论】:

  • 问题是dojo/mobile文件是预先打包和最小化的,所以改变dojo目录中的文件实际上并不会改变大多数文件,因为它不使用它

标签: android dojo ibm-mobilefirst galaxy


【解决方案1】:

由于您希望避免自定义构建 Dojo,另一种方法可能是从您的项目中删除 www/layers/mobile-ui-layers.js,并依赖 Dojo 库项目在开发期间提供资源。然后,您可以将更新后的原始文件放在 Dojo Library 项目中并使用 Mobile Browser Simulator。但是,在部署到设备时,您必须将曾经属于 mobile-ui-layers 的所有应用程序所需资源放入项目的 www/ 目录中,并保持适当的目录结构。

有关 Dojo 库项目的信息以及了解应用程序请求哪些 Dojo 资源,请参阅 Worklight Studio 信息中心文档Worklight Dojo library project setup

如果您决定冒险并执行自定义 Dojo 构建,您可以重建 mobile-ui-layers.js 文件以使用使用 Dojo Build Factory 的修补文件。

【讨论】:

    【解决方案2】:

    我已经使用猴子补丁来完成你想要做的事情。

    require(['dojox/mobile/css3'], function(css3) {    
        css3.prototype.name = function(p, hyphen) {
            // put your patched version of the function here.
        };
    });
    

    您需要确保在调用任何需要使用修补版本的代码之前执行此代码。

    您还将从原始函数中复制代码。每次升级 Dojo 或 Worklight 时,您都需要评估是否仍需要补丁,或者是否需要修改补丁,因为对可能不属于补丁的原始功能所做的更改。

    http://en.wikipedia.org/wiki/Monkey_patch

    Is "monkey patching" really that bad?

    【讨论】:

    • 这是一个很好的尝试方向。不过,我们使用的实际猴子补丁要复杂一些。谢谢!
    【解决方案3】:

    https://dl.dropboxusercontent.com/u/40842201/Worklight%20Samsung%20fix/mobile-ui-layer.js

    尝试在您的 www/layers 文件夹中使用此“mobile-ui-layer.js”。 只需复制文件并重新编译应用程序即可。

    修复基于以下问题:

    【讨论】:

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