0

付属の dojolib を使用する WL 6.1 で作成されたハイブリッド アプリがあります。現在、iPhone 向けに制作されており、Android フレーバーを追加しています。コンソールでモバイル シミュレーターからコードを実行すると、Android と iPhone の両方が正常に動作します。ipa ファイルは問題なく動作します。Android デバイス (Samsung S4) でハイブリッドを実行すると、アプリの起動時にアプリケーションがエラーをスローします。「道場ライブラリーの提供」をオフにしています。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 パッケージのバグを回避する別の方法も見つけました。前述したように、1 つの方法は、DojoBuildFactory を使用して、ファイルが埋め込まれた新しいレイヤーを作成することです。これは、WL が core-web-layer と mobile-ui-layer を作成するために使用するプロセスと同じです。私はこれに取り組んでいるチームを持っていますが、ドキュメントが不足しており、時間のかかるプロセスです。

彼らがそれをしている間、私はこの問題に対処するためのよりクリーンな方法だと思うものを見つけました. 署名されていない apk を効果的に開き、ファイルを挿入して、APK に署名します。魅力のように働きました。私が使用した手順は次のとおりです。

  • 正しいワークライト・サーバーを指し、欠落している dojo ライブラリーの提供をオフにして、作業からビルドします。
  • 署名されていない apk として Android プロジェクトとしてエクスポート
  • JDK と ADT を指す適切な環境設定でコマンド プロンプトを開きます
  • キーストアを作成します (まだ行っていない場合)
  • jar を使用して temp に解凍する
  • dojo ファイルを android/native/www/default からコピーします。
  • jar を使用して apk にパックし直します
  • 瓶に署名する
  • 瓶をジップアラインする

これで、「_」で始まるファイル/ディレクトリがアセットに含まれる作業中の apk が作成されました。

于 2014-09-19T21:18:24.917 に答える