Android Studio 3.0の実行がタスクで失敗しました:dexをマージできません


87

android studioは、ビルドの実行中にビルドエラーが発生していました。

エラー:タスク ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'の実行に失敗しました。java.lang.RuntimeException:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:dexをマージできません "

私のapp:build.gradleファイル:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.pdroid.foodieschoice"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.firebaseui:firebase-ui-auth:2.3.0'

    testCompile 'junit:junit:4.12'
}
configurations.all {
    resolutionStrategy {
        force 'com.android.support:appcompat-v7:26.0.1'
        force 'com.android.support:support-compat:26.0.1'
        force 'com.android.support:support-core-ui:26.0.1'
        force 'com.android.support:support-annotations:26.0.1'
        force 'com.android.support:recyclerview-v7:26.0.1'
    }
}

apply plugin: 'com.google.gms.google-services'

任意のソリューション

編集:firebase githubサイトでサンプルを処理し、解決しました


アプリにmultiDexサポートを含める必要があります
Sudheesh R

プロジェクトのクリーニングと再構築を試してください
Sudheesh R 2017

質問を編集して、1行だけでなく、Gradleコンソールの出力全体を投稿することをお勧めします。問題の詳細は、出力の他の場所にあります。
CommonsWare 2017年

@CommonsWareエラー全体を投稿しました。2行だけです。
anguraj 2017年

2
インスタント実行を無効にして、プロジェクトをクリーンアップし、android {defaultConfig {multiDexEnabled true}}を追加してください
Tara

回答:


66

Cordovaベースのプロジェクトの場合、@ mkimmetが提案したようにcordova clean android、ビルドの前に再度実行します。


1
誰かがこの答えを正しくマークしてください。それは問題を解決します。
pamekar

2
私にとって、「cordova-plugin-androidx」と「cordova-plugin-androidx-adapter」をインストールすると、問題が解決しました
ssz 2010

58

このエラーは、と互換性がない可能性のある外部ライブラリを追加したときに発生しますcompileSdkVersion

を追加するときは注意してくださいexternal library

私はこの問題に2日間を費やし、最終的にこれらの手順に従って解決しました。

  • 必ず、すべてのサポートライブラリは同じであることを確認してくださいcompileSdkVersionあなたのbuild.gradle(Module:app)私の場合はそれがあります26ここに画像の説明を入力してください

  • defaultConfigカテゴリにmultiDexEnabledtrueと入力します。これは重要な部分です。multiDexEnabled真の画像

  • ファイルに移動| 設定| ビルド、実行、展開| インスタント実行して、ホットスワップへのインスタント実行を有効/無効にしてみてください...そして[ OK ]をクリックします ホットスワップへのインスタント実行を有効にする...画像

  • Sync あなたのプロジェクト。

  • 最後に、ビルドに移動| [プロジェクトの再構築]をクリックします。

  • 注:Rebuild Projectは、最初にプロジェクトをクリーンアップしてからビルドします。


それは私に役立ちます、ありがとう。
スミトサクセナ2018年

それを聞いてうれしい。幸せなAndroiding。
Niamatullah Bakhshi 2018年

1
@YajliMaclo素晴らしい!
NiamatullahBakhshi18年

48

これをgradleに追加してみてください

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }

AndroidStudioのキャッシュを無効にしようとしましたか?@Anguraj
Fernando

multidexを有効にするための唯一のステップではありません。新しいAPIレベルでも必要ありません
OneCricketeer 2018

25

解決:

このリンクを参照してくださいminSdkVersionに応じて警告をシャットオフするさまざまなオプションがあるため、20未満に設定されています

 android {
     defaultConfig {
         ...
         minSdkVersion 15 
         targetSdkVersion 26
         multiDexEnabled true
     }
     ... }

 dependencies {   compile 'com.android.support:multidex:1.0.3' }

build.gradleセットに20超えるminSdkVersionがある場合は、以下を使用して警告をシャットダウンします。

  android {
      defaultConfig {
          ...
          minSdkVersion 21 
          targetSdkVersion 26
          multiDexEnabled true
      }
      ... }

次のように依存関係を更新します。

     dependencies {
        implementation 'com.android.support:multidex:1.0.3'
     }

ここでも、唯一の違いは依存関係のキーワードです。

minSdkVersionが20未満:コンパイルを使用

20を超えるminSdkVersion:実装を使用する

  1. これがお役に立てば幸いです。問題が解決した場合は賛成してください。お時間をいただきありがとうございます。
  2. また、詳細は、上の理由、これが発生し、リンクの最初の段落を読んでください、それは徹底的に説明し、なぜでしょうか?そして、この警告はどういう意味ですか。

24

「ビルド->クリーンプロジェクト」を実行してみてください。それは私にとって問題を解決しました。


5
これは、Ionic / Cordovaプロジェクトで、cordova-android-support-gradle-releaseプラグインをインストールしながら、cordova cleanandroidを実行することで機能しました
mkimmet 2018年

簡単なことが物事を修正するときにそれを愛してください!ありがとう!
tonejac

これにより、ReactNativeで作業するときに修正されました。
Michael Auderer 2018年

おかげで、それはこの問題の最も簡単な解決策です、私はこの問題を解決するために私の3日を費やしました、そしてあなたの答えは私のすべての問題を解決します。もう一度私の仲間に感謝します!!!
gautamsinhmori20年

ありがとう。Android Studio4.1で私を助けてくれました。私の日を救った。
ATIF

7

私にとっては、

multiDexEnabled true

そして

packagingOptions {
        exclude 'META-INF/NOTICE' 
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/notice'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license'
        exclude 'META-INF/license.txt'
    }

アプリレベルBuild.gradleのファイルの問題を解決


5

モジュールレベルのbuild.gradleファイルに移動し、次の行をコードに追加します

    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

それで問題は簡単に解決しました。このドキュメントを確認してください


4

以下のようにmultiDexEnabledtrueを使用します。

{
 minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}

そして

implementation 'com.android.support:multidex:1.0.3'

このソリューションは私のために働いた。


4

multiDexEnabled trueを含む上記の多くのソリューションを試しましたが、どれもうまくいきませんでした。

これが私のために働いた解決策です-このコードをapp \ build.gradleファイルにコピーしてください

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support' && requested.name != 'multidex') {
            details.useVersion "${rootProject.ext.supportLibVersion}"
        }
    }
}

コードを実行する前に、gradlewcleanを実行してください


1
私はminSdkVersionが変化し、それは十分だ
氏特別

2

同じことが私にも起こりました。私はAS3.0.1に更新している最中であり、更新を行ってアプリをクリーンアップして再構築した後、すべてが修正されました。


2

私にとってこのエラーを修正したのは、アプリのgradle依存関係の1行を変更することでした。

これから

compile('com.google.android.gms:play-services-gcm:+') {
    force = true
}

これに

compile('com.google.android.gms:play-services-gcm:11.8.0') {
    force = true
}

それだけが私のために働いた。力を加える必要はありませんでした= true
Paulo Linhares-Packapps 2018年

1

また、アプリがMultiDexApplicationをサブクラス化していることを確認してください

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

または、アプリケーションクラスをサブクラス化していない場合は、AndroidManifest.xmlに追加します

<application
  android:name="android.support.multidex.MultiDexApplication"

0

SDKまたはプラットフォームの更新の合間にいますか?はいの場合は、それらを完全に完了してから、続行してみてください。私は通常、更新が必要な個々のパッケージを更新しますが、更新全体を取得する場合は、最大2.5GBになることもあります。この完全な更新を行うと失敗することがあります。Android Studio 3.0にアップグレードすると、SDKが多数更新されましたが、すべてのパッケージが更新されていないため、上記のエラーが発生していました。すべてのパッケージを更新すると、上記のエラーはなくなりました。


キャッシュをクリアまたは無効にしてAndroidStudioを再起動したことを願っていますか?私にとって、Android Studio3は以前のバージョンと比較してバグがあるように見えます。
Vineet Jain 2017

誰かがこれを修正したことがありますか?それを乗り越えることはできません!
68060 2017年

0

私の場合、Firebaseライブラリのバージョンを2.6.0から2.4.2に変更すると、問題が修正されました


0

私にとっての問題は、モジュールでのJava 1.8の使用でしたが、appモジュールでは使用されませんでした。これをアプリビルドグラドルに追加して機能しました:

android{
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

0

同じ問題。multidexを有効にしました:defaultConfig {applicationId "xxx.xxx.xxxx" minSdkVersion 24 targetSdkVersion 26 multiDexEnabled true

キャッシュをクリアし、gradle clean、rebuild、makeを実行し、インポートされたライブラリで競合がないことを確認しようとし(すべての推移的な依存関係を削除)、すべての更新を行いました。それでも:

エラー:タスク ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'の実行に失敗しました。java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:dexをマージできません

ビルドが気に入らなかったことが判明しました:実装 'org.slf4j:slf4j-android:1.7.21'


0

Android Studioのバージョンが3.0.1、Gradleバージョンが4.1、Android PluginVersionが3.0.0の場合、この問題が発生します。次に、Gradleバージョンを3.3にダウングレードし、Android Androidはゼロになり、そのような問題はありません。


0

要求されたSDKバージョンが依存関係と一致しなかったときにこれがありました。ハイライトされた線をクリックして、赤い電球をクリックしてこれを修正できます。実際のバージョンを見つける必要はありません。IDEにそれを理解させるだけです。そして、GoogleリポジトリをMaven構成に追加します。


0

私は同じエラーを受信していた場合、現在ビルドしているものとは異なるビルドバリアントに関連付けられているビルドエラーを修正すると、エラーが解決されました。

私は見ているビルドバリアントをエラーなしで問題なくビルドしていましたが、デバッグしようとするとエラーが発生しapp:transformDexArchiveWithExternalLibsDexMergerForDebugました。他のビルドバリアントのビルドに切り替えると、ビルドプロセスでエラーが発生し、修正されました。これによりapp:transformDexArchiveWithExternalLibsDexMergerForDebug、すべてのビルドバリアントの問題が解決したようです。

このエラーは、参照さている外部モジュール内ではなく、外部モジュールを参照しているビルドバリアントの個別のソースセット内にあることに注意してください。それが私と同じケースを見ているかもしれない誰かに役立つことを願っています!


0

私は完了し、コードでこのジョブを実行するだけでこの問題を修正しました

開く-> build.gradle値をから変更

compile 'com.google.code.gson:gson:2.6.1'

compile 'com.google.code.gson:gson:2.8.2'

0

このDexの問題を取り除くには、1つの依存関係を実装するだけです。この問題は、同じサーバーから複数の異なるサービスを使用している場合に発生します。プロジェクトで広告とFirestoreを使用していて、両方にリポジトリMavenがあるとします。したがって、リポジトリ上で別のデータを呼び出す必要があり、実装するにはdex依存関係が必要です。新しい更新の依存関係:-

 implementation 'com.android.support:multidex:1.0.3'

それはあなたの問題を恒久的に解決すると確信しています


その依存関係はそれを
Gradleに

0
1)multiDexEnabledtrueを追加してください
2)コンパイルエラーが発生した場合は、アプリレベルのbuild.gradle天気を確認してください。同じ依存関係が異なるバージョンで実装されています。
3)同じ依存関係が見つかった場合は、1つ削除します。

android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
それがうまくいくことを願っています:)ハッピーコーディング

0

吸うようなエラーを回避する最も簡単な方法は次のとおりです。

-アプリのcompilesdkversionと同じようにライブラリcombilesdkversionを変更します

-ライブラリのsupportLibraryバージョンをbuild.gradle(app)と同じように変更します


0

これは私のために働くものです。きれいに準備して実行します。

cordova clean android;
ionic cordova prepare andriod;
ionic cordova run andriod;

それが役に立てば幸い。



0

今のところ、プロジェクトのgradle.propertiesファイルの次の設定を使用して、いつでもDXに戻すことができます。

android.enableD8=false

詳細については、https: //android-developers.googleblog.com/2018/04/android-studio-switching-to-d8-dexer.htmlを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.