在wl 6.1中从worklight apk中缺少dojo / _base / * js

时间:2014-09-09 18:05:42

标签: dojo ibm-mobilefirst worklight-runtime

我有一个使用包含dojolib的WL 6.1创建的混合应用程序。目前它正在生产iphone,我们正在添加它的android风味。当从控制台上的移动模拟器运行代码时,android和iphone都能正常工作。 ipa文件工作正常。当我在Android设备(三星S4)上运行混合动力时,应用程序会在应用启动日志中引发错误。我有"提供dojo库"关掉。在DDMS日志中,我看到如下语句:

09-09 12:47:12.092: E/AndroidProtocolHandler(20324): Unable to open asset URL: file:///android_asset/www/default/dojo/_base/declare.js
09-09 12:47:12.263: E/AndroidProtocolHandler(20324): Unable to open asset URL: file:///android_asset/www/default/dojo/_base/connect.js
09-09 12:47:12.303: E/AndroidProtocolHandler(20324): Unable to open asset URL: file:///android_asset/www/default/dojo/_base/event.js

在eclipse的android项目中查看,我在" assets / www / default / dojo / _base"中看到了这些文件。目录。问题是当我查看APK文件时," _base"目录不存在。任何帮助,以了解它为什么会丢失?

2 个答案:

答案 0 :(得分:0)

您的应用程序应该使用dojo文件的编译版本,它似乎不是。 我会检查

  1. 这些文件:core-web-layer.js和mobile-ui-layer位于www文件夹中
  2. wlCommonInit函数包含以下内容:

    function wlCommonInit(){     require([" layers / core-web-layer"," layers / mobile-ui-layer"],dojoInit); }

答案 1 :(得分:0)

我还找到了解决android包装错误的另一种方法。正如我前面提到的,一种方法是使用DojoBuildFactory来创建一个新的图层,其中嵌入了文件。这与WL用于创建core-web-layer和mobile-ui-layer的过程相同。我有一个团队正在研究这个问题,但是文档很少,而且这是一个耗时的过程。

虽然他们这样做,但我发现我认为解决问题的方法更为清晰。有效地打开一个未签名的apk,插入文件,然后签署APK。工作就像一个魅力。以下是我使用的步骤:

  • 从工作指向正确的worklight服务器并关闭提供缺少的dojo库
  • 导出为Android项目作为未签名的apk
  • 使用指向JDK和ADT的正确env设置打开命令提示符
  • 创建密钥库(如果尚未完成)
  • 使用jar
  • 解压缩到temp
  • 从android / native / www / default
  • 复制dojo文件
  • 使用jar
  • 打包回apk
  • 签署jar
  • Zipalign the jar

现在你有一个工作的apk,其中包含资源中以“_”开头的文件/目录。