3

ここに問題があります。私はそれに何日も費やし、すべてのデータベースを検索しました。そのため、適切な単語を検索しなかったか、答えがないかのどちらかです。うまくいけば「まだ」です。

症状: - Android プロジェクトのコンパイル DX は、プロジェクトがビルドされるたびにすべての jar をコンパイルします - 1 回実行するだけで十分な理由はありません。数分かかります。

本当の問題:

- 複数の Jar を追加すると、eclipse がクラッシュする原因になります -- 現在、これはこれらの設定 (重い jar) にあります。

(実際にはパフォーマンスが向上するため、Eclipse のコンパイルが遅い場合は、-XX:+UseParallelGC を追加できます) DX が jar をコンパイルしている間に動作しますが、その間を試行しますが、CPU がビジーでそれができないため、それぞれ 3MB の 4 番目から 5 番目の jar に到達する時点で、ヒープに 600MB のようなものがあります。これはgcoverheadlimit を使用した理由)

それらの1つまたは複数を一緒にコンパイルすると、(同じAndroidプロジェクト内で)うまくコンパイルされます。問題は、それらを個別にコンパイルする方法が見つからないことです(クライアントデバイスにapkをインストールする必要があります)。それらをまとめてコンパイルすると、Eclipse がクラッシュします。

cmdとDXを使用してそれらを1つずつコンパイルしようとしましたが、ビルドされていますが、eclispeでプロジェクトをビルドすると再ビルドされるため、何もしなかったようで、jarをDEXファイルに変換しようとしても役に立ちませんでした.

Javaヒープサイズに関する多くの投稿を赤くしましたが、これは私の場合ではなく、gcoverheadlimitを使用しました.jarが多すぎるとクラッシュします.

すべてを要約すると、Javaの通常のjarをDalvik形式に変換し、それをリソースとしてAndroidプロジェクトに追加したいので、プロジェクトがコンパイルされたら、jarをDalvik形式に変換する必要はありません。

4

3 に答える 3

2

長い調査の結果、問題が何であるかはわかっていると思いますが、回避策はまだわかりません。

症状 : 大きな jar や複数の jar をコンパイルすると、Eclipse がクラッシュする原因となります。クラッシュしないのに、エラー メッセージ : 出力の書き込みに問題があります: opcode == null 、Dalvik 形式への変換がエラー 2 で失敗しました。

原因 : DX は、16 ビットの文字列に含めることができる以上のものを処理することができないため、この文字列の長さを超える (少なくともその間は) 含める方法はありません。

結果 : Android 用の複雑なアプリを 1 つの APK としてプログラムすることはできません。

Android開発者へのアドバイス(どのように構築したかはよくわかりませんが):これらの文字列にarraylistを使用できます。これらの文字列は、それぞれがclasses.dexファイルに順番に書き込まれます。その後、書き込みに制限はありません1 つの APK のコード、および/または開発者が必要とする数の jar を追加する、これは仮定であり、簡単ではありませんが、それほど複雑でもありません.

回避策: 申し訳ありませんが、回避策はまだありません。Eclipse がクラッシュし、"opcode == null" エラー メッセージが表示されなかったため、この問題を理解するのに時間がかかりました。日食の問題、私はこれについてセカンドオピニオンとサードオピニオンを得て喜んでいます.

于 2011-05-29T14:35:40.593 に答える
0

JAR がビルドされたら、それらを外部 JAR として追加します...

Eclipse で、[プロジェクト] メニュー -> [プロパティ]、[Java ビルド パス] の順に選択します。[ライブラリ] タブを選択し、[外部 JAR を追加...] ボタンをクリックして、それらを参照して追加します。

于 2011-05-27T01:47:59.873 に答える
0

私は同じ問題を抱えていました。詳細出力に「Dx processing ...」メッセージが多数あり、classes.dex(3.4 Mb) のビルドに約 3 ~ 4 分かかりました。それは非常に遅く、私は尻込みを感じました。その後、調査を行ったところ、問題の原因は間違った Eclipse JVM 設定 (eclipse.ini) にあることがわかりました。ところで、私は100以上の受け入れを持ついくつかのstackoverflow回答からこの厄介な設定を取得しました。

eclipse.ini に次の行が含まれていないことを確認してください。

    CompileThreshold=5

この行を削除したところ、コンパイルに約 10 秒かかりました!!! また、Eclipse 構成で G1GC の代わりに ParallelGC を使用するようになりました。これは、安定性が高く、IDE がクラッシュしないためです。

したがって、あなたの主なタスクは、eclipse.ini を修正し、疑わしい実験的なパラメーターをすべて取り除くことです。

于 2012-10-11T10:41:21.470 に答える