0

我有一个使用包含的 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”目录不存在。任何帮助了解它为什么丢失?

4

2 回答 2

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); }

于 2014-09-19T20:09:15.750 回答
0

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

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

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

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

于 2014-09-19T21:18:24.917 回答