web-dev-qa-db-ja.com

予期しないトップレベルの例外:com.Android.dex.DexException:複数のdexファイルが定義します

Android App using Android Studio。でGoogle Play Servicesを使用しようとすると問題が発生します。

私はすべてを試しましたが、それでも動作しません。

これはエラーです。

Execution failed for task ':app:dexDebug'.

com.Android.ide.common.internal.LoggedErrorException:コマンドの実行に失敗しました:/ Users/jghg/Desktop/My App/Android/SDK/Android-sdk-mac_86/build-tools/19.0.1/dx --dex- -output/Users/jghg/Desktop/My App/Eureka/UDA/app/build/libs/app-debug.dex/Users/jghg/Desktop/My App/Eureka/UDA/app/build/classes/debug/Users/jghg/Desktop/My App/Eureka/UDA/app/build/dependency-cache/debug/Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/classes-08979151dd1373bd3f799299d93376d22d4afa46.jar/Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/classes-167b9d3c5d689abe004c3fa5b0bcb945d3f0fc8e.jar/Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed /debug/google-play-services-ec20f8af7bb457c5095cae1afa0cee722582f198.jar/Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/support-v4-13.0.0-473d85b8d55c88bfed3404072e6c132f434f2934043429294342929434292943429292943429f1434 jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/support-v4-19.0.1-861cc05365a0e9262c764da37d61e3f93dc16de6.jar/Users/jgh g/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/support-v4-19.0.1-dcc11377c764caea791f711123b8b678f876c3b6.jar/Users/jghg/Desktop/My App/Eureka/UDA/app/build /事前dexed /デバッグ/ Twitter4j-非同期3.0.5-0904cb320186fb23a9a9bf25a048c5bc4ec07bc2.jar /ユーザ/ jghg /デスクトップ/私のアプリ/ユーリカ/ UDA /アプリ/ビルド/プリdexed /デバッグ/ Twitter4j-コア - 3.0.5-41d2d5805e2d90cf77813a126306c4cbe22583ae .jar/Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/Twitter4j-examples-3.0.5-adc1ee9b037c8061429560e6a5fe89ce8e502db6.jar/Users/jghg/Desktop/My App/Eureka/UDA /app/build/pre-dexed/debug/Twitter4j-media-support-3.0.5-37d138cdc631738d13ddb6f4d34c560a9cd8e048.jar/Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/Twitter4j- stream-3.0.5-c96c138ea216b25631a1a8b47520ecaf33f288d8.jarエラーコード:2出力:予期しない最上位の例外:com.Android.dex.DexException:複数のdexファイルがLcom/google/ads/AdRequest $ ErrorCodeを定義しています。 com.Android.dx.merge.DexMerger.readSortableTypes(DexMerger.Java:594)at com.Android.dx.merge.DexMerger.getSortedTypes(DexMerger.Java:552)com.Android.dx.merge.DexMerger.mergeClassDefs (DexMerger.Java:533)com.Android.dx.merge.DexMerger.mergeDexes(DexMerger.Java:170)at com.Android.dx.merge.DexMerger.merge(DexMerger.Java:188)at com.Android。 com.Android.dx.command.dexer.Main.runMonoDex(Main.Java:287)のcom.Android.dx.command.dexer.Mainのdx.command.dexer.Main.mergeLibraryDexBuffers(Main.Java:439) com.Android.dx.command.dexer.Main.main(Main.Java:199)でcom.Android.dx.command.Main.main(Main.Java:103)でrun(Main.Java:230)

ありがとう。宜しくお願いします。

18
Josué H.

同じライブラリ/ディレクトリがbuild.gradleの依存関係に複数回含まれている場合、エラーが発生します。では、次のようなApp構造があるとします。

enter image description here

メインの「アプリ」があり、サブアプリ/モジュール/ライブラリがたくさんあります。ライブラリは次のとおりです。1)_gene_test_library_、2)_genes_nine_old_androids_library_、および3)_swipe_list_view_library_。

私の名前はジーンです。だからこそ、これらすべての「ジーン」ライブラリがあります。

_build.gradle_の_“app”_内には、次のものがあります。

_dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.Android.support:appcompat-v7:21.0.0'

    compile project(':libraries:gene_test_library')
    //compile project(':libraries:genes_nine_old_androids_library')
    compile project(':libraries:swipe_list_view_library')
}
_

_build.gradle_の_gene_test_library_の中には、何もありません:

_dependencies {
}
_

_build.gradle_の_gene_nine_old_androids_library_には、次のものがあります。

_dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:appcompat-v7:21.0.0'
}
_

_build.gradle_の_swipe_list_view_library_には、次のものがあります。

_dependencies {
    compile 'com.nineoldandroids:library:2.4.0+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:appcompat-v7:21.0.0'
}
_

このコード行compile fileTree(dir: 'libs', include: ['*.jar'])は、「ちょっと、このモジュール内の「libs」フォルダー内でjarファイルを探してください」という意味です。モジュールのlibsフォルダーには何もありませんので、そのコード行は無視できます。

_build.gradle_モジュールの_“app”_で//compile project(':libraries:genes_nine_old_androids_library')のコメントを外すとしましょう。次に、_“UNEXPECTED TOP-LEVEL EXCEPTION:”_エラーが表示されます。何故ですか?

enter image description here

まあ、_build.gradle_の_“app”_内に//compile project(':libraries:genes_nine_old_androids_library')を書くことは、_“genes_nine_old_androids_library”_モジュールのビルド依存関係を取得してそこに置くことと同じです。したがって、//compile project(':libraries:genes_nine_old_androids_library')ステートメントのコメントを外すと、「app」モジュールの_build.gradle_は次のようになります。

_dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.Android.support:appcompat-v7:21.0.0'

    compile project(':libraries:gene_test_library')
    ***compile fileTree(dir: 'libs', include: ['*.jar'])***
    ***compile 'com.Android.support:appcompat-v7:21.0.0'***
    compile project(':libraries:swipe_list_view_library')
}
_

_compile 'com.Android.support:appcompat-v7:21.0.0'_が2倍になっていることに注目してください。それがエラーの原因です。

26
Gene

Google Playサービスライブラリはプロジェクトの他の依存関係からエクスポートされており、コンパイル時にdexコンパイラが混乱します。

Gradleを使用している場合、これをプロジェクトのbuild.gradleに含めると、サポートライブラリがメインプロジェクトにエクスポートされなくなります。

apply plugin: 'Android'
apply plugin: 'crashlytics'

/** Must exclude exported support jars from dependencies, or get dex duplicate class      error.
*  we're
**/
configurations {
    all*.exclude group: 'com.Android.support', module: 'support-v4'
    all*.exclude group: 'com.google.Android.gms', module: 'play-services'
}

Andoid studioビルドシステムを使用している場合。次に、ファイル->プロジェクト構造に移動して、無効化->モジュールを選択します。各モジュールに移動して、依存関係タブをクリックし、サポートライブラリとGoogle Playサービスライブラリのエクスポート列のチェックを外します。

さらにサポートが必要な場合は、コメントを投稿してください。

10
iTapAndroid

Build.gradleにインポートされた同じライブラリの異なるバージョンと、ライブラリの1つのバージョンが異なる場合にも発生する可能性があります。たとえば、Google Playストアサービスでは、すべてが同じバージョンを参照している必要があります。

アプリbuild.gradle

compile 'com.google.Android.gms:play-services-base:7.5.0'

一方:

モジュール/ライブラリbuild.gradle

compile 'com.google.Android.gms:play-services-cast:7.8.+'

アプリのバージョンを7.8.0にアップグレードすると問題が解決しました

3
kip2