1

私の Android アプリケーションは、かなり多くの重要な外部ライブラリを使用しています。これらのライブラリはすべて Java で記述されており、ビルド パスに追加するだけです。

Eclipse 内からアプリケーションを起動すると、非常に長い時間がかかり、約 5 分かかります。これは非常にイライラします!

詳細な Android ビルド出力を有効にしました。*.classこれは、ビルド プロセスが外部ライブラリ内のファイル全体を反復していることを示しています。私は何百ものこれらの行を取得します:

...
Dx processing android/support/v4/app/FragmentTransaction.class...
Dx processing android/support/v4/app/FragmentManagerImpl$3.class...
Dx processing android/support/v4/app/LoaderManagerImpl.class...
...
Dx processing com/prosysopc/ua/client/ServerStatusListener.class...
...
Dx processing org/opcfoundation/ua/core/BrowseNextRequest.class...
...

(これはほんの小さなサンプルです。繰り返しますが、それぞれ何百ものサンプルを取得しています*.class)

ここで Dx ツールが何をしているのかはよくわかりませんが、間違いなく面倒です!

さらに悪いことに、このプロセスは起動ごとに繰り返され、キャッシュも何もありません...

考えられるアイデア:

  • これのキャッシュはどこかにありますか?どこ?たぶんそれは読み取り専用で、持続しないのでしょうか?
  • 開発ビルドの「DX 処理」ステップを完全に無効にすることはできますか?

可能な解決策または少なくともアイデアはありますか? これは本当に私を夢中にさせています;-)

ありがとう!

4

1 に答える 1

1

dx ツールは、dex ファイルをマージできます。したがって、1 つのオプションは、これらのライブラリを dex 形式に事前に変換し、dx にそれらをメインのアプリケーション クラスとマージさせることです。

このワークフローは、デフォルトの ant ビルド スクリプトではそのままではサポートされていないようです。また、Eclipse ビルドにもこのような機能があるとは思えません。いくつかの手順を手動で実行するか、ant ビルド スクリプトを微調整する必要があります。

いくつかのメモ:

  1. dx がライブラリを認識してマージするには、classes.dex ファイルを含む jar/apk/zip である必要があります。
  2. それらに対してコンパイルできるように、元の Java jar がまだ必要です。Java jar が dx に渡されないようにし、代わりに dex jar を渡す必要があります。
  3. proguard のようなものを使用している場合、物事はさらに「興味深い」ものになります:)

このすべての作業とハッキングがそれだけの価値があるかどうかの決定は、あなたに任せます。

于 2012-10-08T22:19:59.580 に答える