Eclipseを使用してOpenSAMLを使用するAndroidプロジェクトを試しています。ビルドパスに必要なすべてのjarファイルを追加しました。ここで、プログラムをAndroidアプリケーションとして実行すると、次のエラーが表示されます。
[2012-11-18 11:52:59 - Dex Loader] Unable to execute dex: Cannot merge new index 67075 into a non-jumbo instruction!
[2012-11-18 11:52:59 - MyTestProgram] Conversion to Dalvik format failed: Unable to execute dex: Cannot merge new index 67075 into a non-jumbo instruction!
私は少しグーグルで調べたが、何も起こらなかった。このエラーはどういう意味ですか?
私が見つけた解決策の1つは、dex.force.jumbo=true
わたしの project.properties
。
これは次の点で指摘されました: https://groups.google.com/forum/?fromgroups=#!topic/adt-dev/tuLXN9GkVas
この機能は以前のバージョンでは使用できなかったため、ADT 21を実行していることを前提としています。
同じ問題...ただ置く
dex.force.jumbo=true
project.propertiesの最初の行
Gradleビルドを使用している場合は、dexOptionsをbuild.gradleに追加して、ジャンボモードを有効にします。
Android {
dexOptions {
jumboMode = true
}
}
新しい建物の前に「gradle clean」を実行することを忘れないでください。
私は同じ問題を抱えていましたが、私のIDEはIntelliJ IDEA 13.でした。そのバージョンでは、dex.force.jumbo
命令はproject.properties
ファイルは無視されます。
有効にするには、設定|コンパイラ| Android DXに移動し、ジャンボモードを強制するオプション。
それがお役に立てば幸いです(これが、私が見つけたSO関連の唯一の質問です)。
jumboMode=true
を追加するだけでは、私のgradleビルドでは機能しませんでした。ただし、これは機能しました(adt-devグループのXavierから、この領域に提出されたバグへの返信として引用されています)。
「プロジェクトでdexOptions.jumboModeがtrueに設定されていることを確認して、すべてのビルドフォルダーを手動で削除してから再度ビルドしてみてください。
ルートプロジェクトのビルドがクリーンタスクで削除されず、事前に定義されたライブラリに関する情報が含まれているという問題があります。
説明を追加:
これは、変更によってアプリケーション内の文字列定数の数が増加したときに、Eclipseがインクリメンタルビルドを試みたときに発生します。元のdexには非ジャンボ命令があり、それに統合される新しいdexにはジャンボ命令があります。クリーンを実行すると、ゼロからビルドするときに機能することがわかります。
アプリケーション内の文字列の数が単調に増加している限り、増分ビルドは今後も機能します。
私は同じ問題を抱えていましたが、私の場合、「dex.force.jumbo = true」コマンドは問題を解決しません。 JDKとJREを更新しようとすると、問題が解決します。
この回答が役立つことを願っています