Error:Java.lang.RuntimeException: Java.lang.RuntimeException: com.Android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:Java.lang.RuntimeException: com.Android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.Android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.Android.dex.DexException: Multiple dex files define Lcom/google/zxing/integration/Android/IntentResult;
Android Studio 3.0の場合、これをgradleに追加しました。
multiDexEnabled true
そしてうまくいきました!
例
Android {
compileSdkVersion 25
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.xx.xxx"
minSdkVersion 15
targetSdkVersion 24
versionCode 9
versionName "1.0"
multiDexEnabled true //Add this
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
}
}
}
そこで、次のことを行ってこの問題を解決しました。
./gradle
フォルダーを削除しますどうやって ?
cd ~/[your project root folder] && find . -name build -exec rm -rf {} \; && rm -rf $HOME/.gradle/caches/
gradle config filesが$HOME/.gradle
フォルダーにあると仮定します。
File > Invalidate caches / Restart...
にアクセスし、キャッシュを無効にして再起動しました。Gradleで依存関係を検査し、次のような重複を探すことで、このエラーの原因を特定できるはずです。./gradlew -q app:dependencies
私の場合、ビルド時に次のエラーが発生していました。
Duplicate Zip entry [httpcore-4.4.1.jar
それは私のbuild.gradle
でこれを行うことで解決しました:
implementation ('me.dlkanth:stetho-volley:1.0') {
exclude group: 'org.Apache.httpcomponents'
}
minSdkVersionが21以上の場合
Android {
defaultConfig {
multiDexEnabled true
}
}
minSdkVersionが20以下の場合
1)依存関係に次のライブラリを追加する必要があります
dependencies {
compile 'com.Android.support:multidex:1.0.1'
}
2) Javaクラスを作成し、それをApplicationから拡張してattachBaseContextメソッドをオーバーライドします。
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
) applicationタグのマニフェスト内に作成されたクラスを記載します。
<application
Android:name=".MyApplication"
.
.
.
</application>
最新バージョンの依存関係を確認してください。通常は、依存関係のバージョンと矛盾しています。
1.Build> Clean Project 2.プロジェクトをリビルドします
マージの問題の原因となっている依存関係の詳細ログを確認し、同じものを更新します。依存関係ごとに同じことを繰り返します。
Android Studio 3.0.1で同じ問題に直面しました。上記のように何も機能しないケースをすべて試しました。
ソリューション1:
.gradle
にあるC:\Users\YourComputerName\.gradle
フォルダーを削除しますアプリの.gradle
からではなく必要なすべてのjarをダウンロードし、ビルドパスに追加します
Solution2:
build.gradle
ファイルで既に定義されているjarファイルが重複している場合、問題が発生するためです。
これで問題は解決しました。他の人に役立つかもしれません。
このエラーには複数の理由があります。きれいにして再構築するようなことはありませんでした。
私にとって問題は依存関係でした:
compile 'org.jetbrains:annotations-Java5:15.0'
私はそれを削除し、すべてが正常に機能しました。
「compile」を「compileOnly」に変更します。これが私にとってうまくいったことです。
私はgradleとbla bla blaを削除する他のコメントを試しましたが、multiDexEnabled true
を追加して問題を解決し、apkが64K以上の方法に達していることを調査します。
参照: https://developer.Android.com/studio/build/multidex.html )
私の場合、犯人はSendGrid libで、これを追加して修正されました:
compile 'com.github.danysantiago:sendgrid-Android:1',{
exclude group: 'org.Apache.httpcomponents', module: 'httpclient'
}
Android Studio 3.0.1を使用していますが、同じ問題に直面していました。他の回答が機能しない場合は、これを試してください:
ツール-> Android-> Gradleファイルとプロジェクトを同期
それは私のために働いた Gradleファイルとプロジェクトを同期する
Studio 3.0.0リリースを使用しています。私の場合、唯一の解決策がありました。プロジェクトの「libs」フォルダから古いJARを削除しました。依存関係のある「ksoap2」パッケージでした。少なくとも最も人気のあるパッケージを使用している場合、gradleで取得したパッケージは通常、互いに競合しません。ただし、libsフォルダー内の古いJARは、すべての依存関係が含まれている場合、ビルドをクラッシュさせる可能性があります。
2017年11月9日にビルドされたAndroid Studio 3.0.1 Build#AI-171.4443003を使用しています
Libsフォルダーからjarファイルを削除します。そしてそれは私のためにうまくいく