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

Posted

技术标签:

【中文标题】wl 6.1 中的 worklight apk 中缺少 dojo/_base/*js【英文标题】:dojo/_base/*js missing from worklight apk in wl 6.1 【发布时间】:2014-09-09 18:05:41 【问题描述】:

我有一个使用包含的 dojolib 使用 WL 6.1 创建的混合应用程序。目前它正在为 iphone 生产,我们正在添加它的 android 风格。从控制台上的移动模拟器运行代码时,android 和 iphone 都可以正常工作。 ipa 文件工作正常。当我在 android 设备 (Samsung 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”目录不存在。对了解它为什么丢失有任何帮助吗?

【问题讨论】:

在您的项目中,这些文件是否存在于 www 目录中? 是的,它们位于“project/www/dojo/_base”目录中。我唯一找不到它们的地方是在 apk 文件中。 .settings 文件夹内有一个文件 com.ibm.imp.worklight.core.prefs 是否有您项目的条目。例如...toolkit/apps//dojo=true 是的,它设置为 true。我做了一个测试并将 assets/www/default/dojo 中的相同目录(_base)复制到“base”并显示出来。我尝试在其中提供一些其他新目录。任何以下划线开头的目录都会从 apk 中删除。 你是对的,我的程序也没有添加这些文件,但它们应该不需要,因为这些函数的声明存在于 core-web-layer.js 中 【参考方案1】:

您的应用程序应该使用 dojo 文件的编译版本,但似乎并非如此。 我会检查

    这些文件:core-web-layer.js 和 mobile-ui-layer 位于您的 www 文件夹中

    wlCommonInit 函数包括如下:

    函数 wlCommonInit() 要求([“层/核心网络层”,“层/移动用户界面层”],dojoInit);

【讨论】:

我们有这些,但我们使用的某些类不属于这些层。我与 WL 开发团队交谈,他们的建议是使用 Dojo 构建工具并为不存在的部分创建一个新层。【参考方案2】:

我还找到了解决 android 打包错误的替代方法。正如我之前提到的,一种方法是使用 DojoBuildFactory 创建一个新层,将文件嵌入其中。这与 WL 用于创建 core-web-layer 和 mobile-ui-layer 的过程相同。我有一个团队致力于此,但文档......很少,而且这是一个耗时的过程。

在他们这样做的同时,我发现了我认为解决问题的更简洁的方法。有效地打开未签名的 apk,插入文件,然后对 APK 进行签名。像魅力一样工作。以下是我使用的步骤:

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

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

【讨论】:

以上是关于wl 6.1 中的 worklight apk 中缺少 dojo/_base/*js的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 6.1 - WL.Server.setActiveUser 凭证,它安全吗?

IBM Worklight 6.1 - 如何自定义 WL.BusyIndi​​cator 的高度和宽度?

IBM Worklight 6.1 - 如何将应用程序连接到远程 Worklight 服务器?

Worklight 6.1-在调用适配器时,此记录“wl_antiXSRFRealm 质询处理程序的等待列表”是啥意思

Worklight 6.1 中的默认推送通知声音

直接更新在 Worklight 6.1 中不起作用?