複数の大きなサードパーティのjarファイル(Androidライブラリなど)を含む非常に大きなAndroidプロジェクトがあります。
Dexのメソッド制限の最大数に達したと思います(Eclipse経由でコンパイル):
[2012-11-18 02:28:45 - ファイル内を検索] Dx 処理 classes.dex...
[2012-11-18 02:28:48 - Dex ローダー] dex を実行できません: 新しいインデックス 66774 をマージできません非ジャンボ命令!
[2012-11-18 02:28:48 - ファイル内を検索] Dalvik 形式への変換に失敗しました: dex を実行できません: 新しいインデックス 66774 を非ジャンボ命令にマージできません!
したがって、SDK ツール 21 (プラットフォーム ツール 16) を利用して、メイン プロジェクトの project.properties を set に編集しましたdex.force.jumbo=true
。
APK の生成を許可するフラグ。しかし、私はそれを適切にインストールできませんでした(物理的およびエミュレーターの両方で)。dex オプティマイザーの障害があるようです:
11-18 20:11:05.338: I/PackageManager(103): dexopt を実行中: com.mypackage.myapp
11-18 20:11:08.577: E/dalvikvm(868): 順不同の method_idx: 0x2ae0 then 0x1
11-18 20:11:08.577: E/dalvikvm(868): アイテム 1544 @ オフセット 0xf7ae24
11-18 11-18 20:11:08.577: E/dalvikvm(868): セクション タイプ 2006 のスワップに失敗しました
11-18 20 :11:08.577: E/dalvikvm(868): エラー: バイト スワップ + 検証に失敗しました
11-18 20:11:08.597: E/dalvikvm(868): 最適化に失敗しました
11-18 20:11:08.597: W/installd( 39): DexInv: --- END '/data/app/com.mypackage.myapp-1.apk' --- status=0xff00、プロセスが失敗しました
11-18 20:11:08.597: E/installd(39): 「/data/dalvik-cache/data@app@com.mypackage.myapp-1.apk@classes.dex」で dexopt が失敗しました res = 65280
11-18 20:11:08.697: W/PackageManager(103): パッケージを /data/app/com.mypackage.myapp-1.apk にインストールできませんでした
11-18 20:11:09.018: D/dalvikvm( 103): GC_EXPLICIT は 1698K を解放し、17034K/19463K を 13% 解放し、7ms+135ms
11-18 20:11:09.068 を一時停止しました: D/AndroidRuntime(780): VM をシャットダウンしています
dex.force.jumbo
意図されていない目的でフラグを使用しようとしていますか、それともこのエラーは予測できませんか?
もしそうなら、非常に多くのクラス/メソッドを含むプロジェクトを生成するためのより良い戦略はありますか?