dexをマージできません


307

Android Studio Betaを持っています。古いモジュールをコンパイルして新しいプロジェクトを作成しましたが、アプリを起動しようとすると、次のメッセージで起動しませんでした。

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

com.android.builder.dexing.DexArchiveMergerException:dexをマージできません

しかし、私はこのエラーを解決する方法を知りません。私はこれを何時間もグーグルで検索したが成功しなかった。

私のプロジェクトグラドル:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta6'
        classpath "io.realm:realm-gradle-plugin:3.7.1"
        classpath 'com.google.gms:google-services:3.1.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

私のアプリのgradle:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "parad0x.sk.onlyforyou"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    compileOptions {
        targetCompatibility 1.7
        sourceCompatibility 1.7
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
    lintOptions {
        checkReleaseBuilds false
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    //noinspection GradleCompatible
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    compile project(path: ':loginregisterview')


}

そして私のモジュールgradle:

    apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 26
        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:appcompat-v7:26.0.2'
    compile 'com.android.support:support-v4:26.1.0'
    compile 'com.github.bumptech.glide:glide:4.0.0'
    testCompile 'junit:junit:4.12'
    compile project(path: ':parser')

}

私の2番目のモジュール:

     apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    realm {
        syncEnabled = true
    }
    useLibrary 'org.apache.http.legacy'

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile 'junit:junit:4.12'
    //  compile 'com.android.support:appcompat-v7:23.1.0'

    //   compile 'com.fasterxml.jackson.core:jackson-core:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-databind:2.9.0'
    compile 'com.google.code.gson:gson:2.6.2'
}

____________調査結果_________

2番目のモジュール(パーサー)をインポートしなかった場合、アプリはdexでクラッシュしませんでしたが、モジュールがインポートされなかった場合、アプリは機能しませんでした。:D:D


6
Android Studio 3.0 Stableバージョンで同じ問題が発生している場合は、回答stackoverflow.com/questions/46949761/…を確認し、それが役立つかどうかを確認することを強くお勧めします。
Bhavesh Patadiya 2017年

1
私は同じ問題を抱えており、このページに記載されているすべての方法に従いましたが、助けにはならなかったので、gradleに移動し、各ライブラリにカーソルを合わせて、新しいバージョンが利用可能かどうかを確認します。新しいバージョンを持っているので、更新してGradleを同期して実行します。出来た。
Shahzad Afridi 2017年

回答:


293

からに更新すると、同じ問題が発生しcom.google.android.gms:play-services:11.2.2ましたcom.google.android.gms:play-services:11.4.0。これは私のためにそれを解決しました:

  1. 掃除
  2. 再建

あなたはその解決策で本当の問題を遅らせるだけです。おそらくバージョン11.4.0に含まれるメソッドは少なくなります。以下の私の答えを参照してください。追加する次の依存関係でこのエラーが発生するのは間違いない
itzhar

2
これで私の問題は解決しましたが、それmultiDexEnabled trueだけでは解決できませんでした
Yuri Brigance

28
com.google.android.gms:play-services-location:11.6.0と同じ問題...これは有効な解決策ではありません
issamux

3
このソリューションは、Googleアナリティクスライブラリを使用して互換性の問題が発生したときに役立ちました。ASでandroidプロジェクトナビゲーターペインを「プロジェクト」として表示すると、「外部ライブラリ」が表示されます。外部ライブラリを展開すると、プロジェクトのコンパイルに使用されたすべてのjarとモジュールが表示されます。互換性のないモジュールの組み合わせを特定するのに役立ちます。
angryITguy 2017

3
上記のコードが「compileSdkVersion 26」の場合に機能しない場合は、これを試してください。build.gradle(Module:app)に移動し、defaultConfigカテゴリと最後のステップで「multiDexEnabled true」を追加します。設定| ビルド、実行、展開| インスタントランして有効/無効にしよう
Sumit Saxena

325

上記をすべて試しましたが、どれも役に立ちません。最後に、私はこの作品を見つけました:

app / build.gradle:

android {
    defaultConfig {
       multiDexEnabled true
    }
}

11
ありがとう。問題は、ほとんどの回答が、再構築できない他のソースからのJARファイルを含めることを考慮していないことだったと思います。multiDexでは、互換性のないコードを組み合わせることができるようです。
Brendon Whateley 2017年

2
この解決策は私にとってはうまくいきましたが、それに加えて、API <= 21のmultidexを明示的に有効にする必要がありました developer.android.com/studio/build/multidex.html
hamou92

2
受け入れられた回答よりも関連性が高いにもかかわらず、「Undex to merge dex」というメッセージが引き続き表示される
John

13
私のために働いていませんでした。この変更により、別のエラーが発生しました。タスク ':app:transformClassesWithMultidexlistForDebug
Atul

1
はい、5時間もの間、私はまったく異なる答えで住んでいました。しかし、どういうわけか私はそれがMultidexの問題であることに気付き、ここに上陸しました。私は本当でした。おかげで男
sud007

59

警告に注意してください!

警告を削除するだけで、エラーが自動的に消えることがあります。以下の特殊なケースを参照してください。


モジュールレベルのbuild.gradleファイルに次の2つの依存関係がありました。

implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

スタジオは警告しましたdexのマージの問題に加えて):

すべてのcom.android.supportライブラリは、まったく同じバージョン仕様を使用する必要があります(バージョンを混在させると、ランタイムクラッシュが発生する可能性があります)。見つかったバージョン27.0.221.0.3。例にはcom.android.support:animated-vector-drawable:27.0.2com.android.support:support-v4:21.0.3

だから私は明示的にバージョンをcom.android.support:support-v4確認し(詳細はこちらを参照)、両方の問題(警告とdexのマージに関連する問題)を解決しました

implementation 'com.android.support:support-v4:27.0.2'  // Added this line (according to above warning message)
implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

他の同様の状況については、以下のコメントを参照してください。


1
ありがとう、これで問題が解決しました。もともとはeu.inloop:androidviewmodel:1.3.4を追加したことが原因でした
lsrom

1
正確に言えば、エラーがもっと正確になればいいのに
Amin Keshavarzian

1
どうもありがとう。同じ問題がありました。私はv26を使用し、sdk 27​​にアップデートして問題を解決しました。
ジョニー

2
これが正解です。に依存関係のある1つのライブラリ(airbnb / epoxy)を追加した後、ビルドが機能support:design:26.1.0しなくなり、まだその依存関係を持っていませんでした。私の他のサポートライブラリのバージョンは27.1.0でした。バージョンにsupport:design依存関係を追加した後27.1.0、私の問題は解決されました。
alashow 2018年

2
ありがとうございました。あなたは私の日を救います。
Nithinjith

37

私の場合、残念ながら、MichelのソリューションもSuragchのソリューションもうまくいきませんでした。

だから私はこの問題を次のようにして解決しました:

Gradle:3.0 コンパイル設定が廃止され、置き換える必要があり、実装API。詳細については、こちらをご覧ください。GradleBuild Toolの公式ドキュメントをご覧いただけます。

コンパイル構成はまだ存在しますが、APIおよび実装構成が提供する保証を提供しないため、使用しないでください。

コンパイルではなく実装またはAPIを使用する方が良い

単に置き換えるコンパイルし実装debugCompiledebugImplementationtestCompiletestImplementationandroidtestcompileandroidTestImplementation

例:これの代わりに

compile 'com.android.support:appcompat-v7:26.0.2'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.github.bumptech.glide:glide:4.0.0'

このように使う

implementation 'com.android.support:appcompat-v7:26.0.2'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.github.bumptech.glide:glide:4.0.0'

その後

  • プロジェクト内の.gradleフォルダーを削除します(.gradleを表示するには、左上のナビゲーターで[プロジェクト]ビューに切り替える必要があります)
  • すべてのビルドフォルダーとGradleキャッシュを削除します
  • [ビルド]メニューから[ プロジェクトクリーン ]ボタンを押します。
  • タスクが完了したら、[ビルド]メニューの[ プロジェクト再構築 ]ボタンを押します。

それが役に立てば幸い!


2
おかげで、私がしなければならなかったのは、コンパイルを実装に変更することだけでした。それは正常にビルドされ、他のステップを完了する必要はありませんでした。Facebook SDKを更新した後、ビルドが失敗し始めました
Shayno 2017年

2
私のために働いた-理由の洞察?
Alex

1
削除するフォルダがあるべき.gradleではなく./gradle
ゲイリーBakの

1
実際に私のために働いた唯一の答え。ありがとう!
マイケルリチャードソン

1
ありがとう、それは最もクールな答えです。検索の上部にある必要があります。私のために働いた。
危険

27
  1. .gradleディレクトリを削除します。

  2. アプリをもう一度実行します。

ノート

  • .gradleディレクトリには、プロジェクトのルートフォルダにあります。(最初に隠しファイルを表示する必要がある場合があります。)
  • Android 3.0を使用して依存関係モジュールを更新するたびに、これを行う必要があります。(Android Studio 3の最近のリリースで問題が解決したようです。)

4
これは、キャッシュを無効にして再起動するときにも役立ちました
Vasili Fedotov

私は最終的にこれをしたとき、これは..私は容疑者ILBバージョンの数を更新し、すべてのコンパイルのキーワードを削除し、更新すべてを試みていた..私の問題を修正したときに、私は不信にあった、それは...働いた
hanzolo

あなたは私の命を救った!ありがとう
Masterfego

24

.gradleSuragchの提案どおりに削除するだけでは不十分でした。さらに、私は実行する必要がありましたBuild > Clean Project

を表示するには.gradle、左上のナビゲーターで[プロジェクト]ビューに切り替える必要があります。

プロジェクトビューに切り替え


23

私は他のすべての解決策を試しましたが、誰も私のために働いていませんでした。最後に、編集して同じ依存関係バージョンを使用して解決しましたbuild.gradle。この問題は、サポートの依存関係の異なるバージョンまたはgoogleライブラリを使用するライブラリをgradleに追加するときに発生すると思います。

次のコードをビルドグラドルファイルに追加します。次にcleanrebuildプロジェクト。

PS:それは私にとって古いソリューションだったので、次のライブラリの更新バージョンを使用する必要があります。

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '26.1.0'
        }
    } else if (requested.group == "com.google.android.gms") {
        details.useVersion '11.8.0'
        } else if (requested.group == "com.google.firebase") {
            details.useVersion '11.8.0'
          }
      }
}

5
他のすべてのソリューションを試しましたが、結局これだけで
アンテ

@Ali Gurelliありがとう、私は多くの解決策を試してみましたが、この作業だけでした。
Bipin Bharti、2018

ありがとう、でも私はバージョンの詳細を使用します。useVersion'15 .0.0 '
Elsunhoty

解決策をありがとう。同じ問題が私にも起こりました。グーグルタップアンドペイは10.0.0で、残りのすべてのライブラリは最新バージョンにあります
R World


14

if(1。作業をクリーンアップして再構築してみてください)その後、良い

それ以外の場合(2. Gradle作業を削除してみてください)、それから良い

else-> 3. grade.propertiesに追加してみます

android.enableD8 = false

else-> 4. multiDexEnabledbuild.gradle にtrueを追加します

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

依存関係を追加します

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

最初のものはuでうまくいくかもしれませんが、それは実際にはたとえばあなたの問題の性質に依存します。

このライブラリを追加するとエラーが発生する

implementation 'com.jjoe64:graphview:4.2.2'

後で確認する必要があり、同じバージョンのサポートライブラリを追加する必要があることがわかりました。だから私は別のバージョンを試さなければならない

compile 'com.jjoe64:graphview:4.2.1'

そしてそれは問題を修正します。そのため注意してください。


3
この問題に最も役立つ方法。ここで言及したいのは、詳細については「gradlew app:transformDexArchiveWithExternalLibsDexMergerForDebug --stacktrace」コマンドを使用できることです。multidexを有効にする必要があることがわかりました。お役に立てば幸いです。
パンダ

13

私の場合、問題は部屋のライブラリが原因でした:

compile 'android.arch.persistence.room:runtime:1.0.0-alpha1'

それを次のように変更します。

compile 'android.arch.persistence.room:runtime:1.0.0'

働いた。


どうもありがとう、これは私を助けてくれました!
Phil

この答えを見つけてうれしいです。ありがとう!
callOfCode

12

上記のソリューションに追加するだけです:

複数の場所(または同じファイル内)で、それらの異なるバージョンを指している重複した依存関係がないことを確認してください。


これは、multiDexEnabled trueを追加して他の答えを試す前に、最初に確認する必要があると思います。ありがとう!
Aleksandr A

11

こんにちは私は同じ問題がほとんどすべてを試しました。だから、最後に私は6時間の苦労の後、すべてを行ごとにデバッグすることで解決しました。

classpath 'com.google.gms:google-services:3.0.0'

Google-services 3.0 playServiceVersion:11.6.0以下のStudio 3.0ではFirebaseをサポートしていません。

implementation "com.google.firebase:firebase-messaging:$rootProject.ext.playServiceVersion"
implementation "com.google.firebase:firebase-core:$rootProject.ext.playServiceVersion"
implementation "com.firebase:firebase-jobdispatcher-with-gcm-dep:$rootProject.ext.jobdispatcherVersion"

解決 :

Googleサービスをに変更しました

classpath 'com.google.gms:google-services:3.1.1'

また、Firebaseサービスをサポートしています。

うまくいけば、誰かが彼/彼女の時間を節約できます。


1
11.4.0の実装「com.google.firebase:firebase-core:11.4.0」としてplayServiceVersionを使用していたのと同じ問題がありますが、実装「com.google.firebase:firebase-core:11.6.2」に変更して修正しました問題 。したがって、異なるlibのバージョン依存関係を確認してください
durgeshtrivedi

9
  1. 有効にする

    defaultConfig {multiDexEnabled true}

  2. ステップ1が機能しない場合

    プロジェクト構造に移動し、異なるバージョンを使用している外部ライブラリを見つけます。それをダブルクリックし、そのjarファイルを削除します。プロジェクトを閉じてもう一度開くと、Android Studioがプロジェクトを再構築します。問題はなくなるはずです。


+1-サポートlib、rxjava、およびサードパーティの依存関係(13k行)がありました。メソッドカウントを見ると、目が飛び出しそうになりました。
snodnipper

6

可能性の1つは、同じライブラリが存在するが、依存関係のバージョンが異なることです

私はgradleファイルの次の行でこの問題がありました:

  • compile fileTree(include: ['*.jar'], dir: 'libs')
  • compile 'com.google.code.gson:gson:2.8.2'

gsonライブラリは私のlibsディレクトリにありましたが、以前のバージョンのものでした。gson-2.3.1.jarlibsディレクトリからを削除すると、すべてが正常に戻ります。


削除compile fileTree(include: ['*.jar'], dir: 'libs')も私のために修正しました。ありがとう(y)
Dinuka Salwathura '12年

5

kotlinサポートを組み込んだ後にこのエラーが表示され、他のソリューションがどれも機能しない場合は、アプリモジュールのkotlin依存関係を次のように変更してみてくださいbuild.gradle

implementation ("org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version") {
    exclude group: 'org.jetbrains', module: 'annotations'
}

これは、Android Studio 3.0 Beta 6では動作します。詳細については、この回答を参照してください。


そうです、アノテーションが除外されていないと、Kotlinの導入によってビルドが壊れる可能性があります。
Stoycho Andreev 2018

ありがとう。これは私にとっての修正でした。私は自分の問題を特定するのに3日間も苦労しています。
Naveen Kumar M

代わりにKotlinプラグインバージョン1.2.30にアップグレードしてください(リリースされたばかり)。インスタントランも再び有効にできます。
KTCO 2018年


5

[解決できないDEXをマージできません]何時間もスタックがオーバーフローした後、「DEXをマージできないエラー」を解決しました

  1. Gradleのすべてのcom.android.support行をv27.1.0に更新します

原因-Androidはサポートライブラリをv27.1.0に更新したため、gradleファイルのすべてのAndroidサポート行を26.1.0から27.1.0に変更する必要があります

  1. リポジトリセクションに、「https://maven.google.com」エンドポイントを持つmavenセクションが含まれていることを確認してください。例えば:

    allprojects {リポジトリ{jcenter()maven {url " https://maven.google.com "}}}

原因:-AndroidはSDKマネージャーでサポートライブラリを更新できず、maven.google.comを使用して更新するため、27.1.0サポートライブラリを使用するにはこれを含める必要があります

バージョン変更後: 1.プロジェクトのクリーン2.プロジェクトの再構築


4

以下にコマンドを追加します。

android {
...

    dexOptions {

        jumboMode true
        javaMaxHeapSize "4g"

    }
}

4

Google Play開発者サービス(最新バージョン)のインストール+含む

android {
    defaultConfig {
        multiDexEnabled true
        }
}

build.gradleで私のために問題を解決しました、プロジェクトをクリーンアップして再ビルドしてください!


3

私の場合、プロジェクトのlibsフォルダーに追加したのは gson-2.8.1.jarでした。しかし、参照はすでにSDKによってそこにありました。そのため、gson-2.8.1.jarをlibsフォルダーに追加する必要はありませんでした。

がそれを取り出したとき、gson-2.8.1.jarプロジェクトはこの奇​​妙なエラーなしにコンパイルされます。

したがって、libsフォルダーと依存関係を改訂してみてください。


3

私はクリス・ジュニアに同意します。Firebaseを使用してAdMob広告を埋め込んでいる場合(またはそうでない場合でも)、依存関係として追加しなくても、play-services-analyticsにはplay-services-adsが含まれます。分析には11.4.0ではなくバージョン10.0.1の広告が含まれているため、Googleは11.4.0のロールアウトで間違いを犯しました(gradle内のマウスポインターのヒントはこれを示しています)。

私は手動で追加されたコンパイル「11.4.0:プレイサービス-広告com.google.android.gms」を働いた上部ではなく、私だけ無効にインスタントの実行後: http://stackoverflow.com/a/35169716/530047

そのため、10.0.1に戻るか、広告を追加してInstant Runを無効にします。それが何かを助けるなら私はそれを見つけました。


OPはPlayサービスについて言及しましたか?
IgorGanapolsky 2017年

承認された答えはしました。この問題がそのシナリオなしで浮上している場合、私にはわかりません!
ジョナサン

2

私は同じ問題に遭遇し、私の事件の真の理由を見つけました。以前は、以前のすべての回答も再試行しましたが、問題は解決しませんでした。私のWearアプリプロジェクトには2つのモジュールがあり、build.gradleは次のとおりです。

Wearモジュールのbuild.gradle:

implementation project(':common')
implementation files('libs/farmer-motion-1.0.jar')

共通モジュールのbuild.gradle:

implementation files('libs/farmer-motion-1.0.jar')

Gradle 3.xにアップグレードする前は、「実装」はすべて「コンパイル」です。

--stacktraceオプションを指定してgradlewを実行し、スタックトレースを取得します。この問題が発生した場合は、gradleコンソールウィンドウでこれをクリックするだけです。そして、jarパッケージへの依存関係が繰り返されていることがわかりました:

Caused by: com.android.dex.DexException: Multiple dex files define Lcom/farmer/motion/common/data/pojo/SportSummary$2;

farmer-motion-1.0.jarパッケージのクラスSportSummaryで、公式の移行ガイドを読んだ後、build.gradleを次のように変更しました。

Wearモジュールのbuild.gradle:

implementation project(':common')
// delete dependency implementation files('libs/farmer-motion-1.0.jar')

共通モジュールのbuild.gradle:

api files('libs/farmer-motion-1.0.jar') // change implementation to api

これで、wearモジュールは共通モジュールによるfarmer-motion-1.0.jarエクスポートに依存します。実行時にjarパッケージへの依存関係がない場合、jarパッケージの実装」依存関係も「compileOnly」に変更できます。


2

私も問題がありました。

私は変更することで解決することができたcompileSdkVersionし、targetSdkVersion最新バージョンに。


2

私たちのプロジェクトでは、同じjarを誤って異なる名前で2回追加しました。それらの1つを削除すると、問題が解決しました。


これで私の問題は解決しました。私は内部のandroidライブラリプロジェクトをビルドしていて、そのlibsフォルダーの下に2つのjarファイルがありました。1つは他の1つをバックアップしたものですが、ファイル名が異なります。
hopia

2

これはあなたの問題ではないかもしれませんが、プロジェクトの依存関係{}セクションに2つの同一の(ただし名前が異なる)ライブラリを誤って含めたときにこのエラーが発生しました。


1

私にとっては、app \ build.gradleのfirebaseメッセージングを更新していました

compile 'com.google.firebase:firebase-messaging:10.0.1'

compile 'com.google.firebase:firebase-messaging:11.4.2'

1

考えられる根本的な原因の1つ:マルチモジュールプロジェクトのAndroid Studioインポートで適切に処理されなかった一時的な依存関係の重複。リストを確認して削除してください。私にとって、修正は文字通りこれでした:

--- a/project/module/build.gradle
+++ b/project/module/build.gradle
@@ -21,5 +21,4 @@ android {
 dependencies {
     implementation project(':upstream-dependency-project')
     implementation 'com.android.support:support-v4:18.0.0'
-    implementation files('libs/slf4j-android-1.6.1-RC1.jar')
 }

1

私のプロジェクトでこの問題の理由がわかりました。build.gradleで1つの依存関係が2回追加されました。依存関係を追加して1回、jar依存関係を追加して1回:

コンパイル 'org.achartengine:achartengine:1.2.0'
...
実装ファイル( '../achartengine-1.2.0.jar')

最初の行を削除した後、問題は解決しました。


1

上位の回答がうまくいかない場合は、同じライブラリに依存する複数の依存関係があることが問題である可能性があります。

デバッグのヒントをいくつか紹介します。このサンプルコードで com.google.code.findbugs:jsr305:3.0.0は、は問題のライブラリです。

ソリューションをチェックするために変更するたびに、常にクリーンアップして再構築してください!

  1. --stacktrace詳細については、フラグをオンにして構築してください。クラスについて文句を言うだろう、Googleがそのライブラリを見つけるためのクラス。フラグ付きのGradleを常に実行するようにAndroidスタジオを設定する方法は次のとおり--stacktraceです。

  2. View > Tool Windows > Gradle Consoleビルド後にAndroid StudioのGradleコンソールを確認する

  3. を実行して、繰り返し依存関係を確認します./gradlew -q app:dependencies。build.gradleを変更するたびに、これを再実行できます。

  4. build.gradleでは、

    android {
            ...
            configurations.all {
                resolutionStrategy {
                    // Force a particular version of the library 
                    // across all dependencies that have that dependency
                    force 'com.google.code.findbugs:jsr305:3.0.0'
                }
            }
    }
  5. build.gradleでは、

    dependencies {
        ...
        implementation('com.google.auth:google-auth-library-oauth2-http:0.6.0') {
            // Exclude the library for this particular import
            exclude group: 'com.google.code.findbugs'
        }
    }
  6. build.gradleでは、

    android {
        ...
        configurations.all {
            resolutionStrategy {
                // Completely exclude the library. Works for transitive
                // dependencies.
                exclude group: 'com.google.code.findbugs'
            }
        }
    }
  7. 依存関係の一部がjarファイルにある場合は、jarファイルを開いて、競合するクラス名があるかどうかを確認します。そうである場合は、おそらく新しいクラス名でjarを再構築するか、シェーディングを調べる必要があります。

もう少し背景を読んでください:


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

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

2
詳しく説明してもらえますか?
sg7 2018年

私も同じ問題を抱えていましたが、その瞬間に自分の問題を解決することに気付きましたが、将来のアップデートでは、実際に状況が変わる可能性があります。
エベンワット

1

私の場合、ライブラリがこの問題を引き起こし、ライブラリはプロジェクトに正常に追加されましたが、アプリを実行すると、このエラーが表示されます。したがって、これがあなたにも起こった場合は、githubに移動して問題を確認するか、新しい問題を提起できます。ライブラリに関する解決策が見つからない場合は、ライブラリを置き換えることをお勧めします。

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