web-dev-qa-db-ja.com

複数のdexファイルがLandroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompatを定義します。

コマンドラインからgradle assembleDebugを実行すると、突然このエラーが発生します。

UNEXPECTED TOP-LEVEL EXCEPTION:
com.Android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    at com.Android.dx.merge.DexMerger.readSortableTypes(DexMerger.Java:592)
    at com.Android.dx.merge.DexMerger.getSortedTypes(DexMerger.Java:550)
    at com.Android.dx.merge.DexMerger.mergeClassDefs(DexMerger.Java:531)
    at com.Android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.Java:168)
    at com.Android.dx.merge.DexMerger.merge(DexMerger.Java:186)
    at com.Android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.Java:300)
    at com.Android.dx.command.dexer.Main.run(Main.Java:232)
    at com.Android.dx.command.dexer.Main.main(Main.Java:174)
    at com.Android.dx.command.Main.main(Main.Java:91)

私がv4用にgrepした場合、私は自分のビルドフォルダの中に2つのファイルを見ることになります。

Binary file build/pre-dexed/debug/support-v4-19.0.0-2ba5fdd60a6c3836b3104a863fe42897da1fa9d1.jar matches
Binary file build/pre-dexed/debug/support-v4-r7-227d905d79b23b20866531d4f700446c040a2ccb.jar matches

私のgradleファイルには、このサポートライブラリだけが含まれています。

compile 'com.Android.support:support-v13:19.0.0'

どういうわけかr7ライブラリがどのように含まれているかについて私は困惑しています。 gradle cleanを実行しましたが、assembleDebugを再実行すると常に表示されます。

Buildディレクトリの中でr7をgrepすると、ファイルの中でそれがわかります。

Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches

V13を含めないと、他のものはコンパイルされません。

しかし、v13にはv4サポートライブラリは含まれていませんか?

これはplay services AARバンドルとv13ライブラリの間の非互換性ですか?

Gradleplease.appspot.comからグラドルファイルを取得しました。

プレイサービスを削除しても問題は解決しません。同じエラーです。

Build.gradle内の私の依存関係:

 dependencies {


 // Google Play Services
//compile 'com.google.Android.gms:play-services:4.0.30'

// Support Libraries
//compile 'com.Android.support:support-v4:19.0.0'
///compile 'com.Android.support:appcompat-v7:19.0.0'
//compile 'com.Android.support:gridlayout-v7:19.0.0'
compile 'com.Android.support:support-v13:19.0.0'
compile 'org.Eclipse.mylyn.github:org.Eclipse.egit.github.core:2.1.5'
compile 'commons-codec:commons-codec:1.9'
compile 'com.madgag:markdownj-core:0.4.1'
compile 'com.wu-man:Android-oauth-client:0.0.2'
compile 'com.google.http-client:google-http-client-jackson2:1.17.0-rc'
compile 'org.Apache.commons:commons-lang3:3.2'
compile 'com.google.code.gson:gson:2.2.4'
}
208
xrd

依存性レポートを生成するには、gradle -q dependencies(またはgradle -q :projectName:dependencies)を実行します。 r7がどこから来ているのかがわかります。

compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
|    +--- com.actionbarsherlock:actionbarsherlock:4.4.0
|    |    \--- com.google.Android:support-v4:r7
|    +--- com.commonsware.cwac:camera:0.5.4
|    \--- com.Android.support:support-v4:18.0.+ -> 18.0.0
\--- com.Android.support:support-v4:18.0.+ -> 18.0.0

次に、excludeディレクティブを使用してその依存関係をブロックします。私の場合、それは私のCWAC-Cameraライブラリから来ているので、私は使用します:

dependencies {
    compile('com.commonsware.cwac:camera-v9:0.5.4') {
      exclude module: 'support-v4'
    }

    compile 'com.Android.support:support-v4:18.0.+'
}

(2番目のcompileステートメントは、実際に必要なバージョンを示しています)

依存関係レポートを再度実行すると表示されるように、これで問題は明らかになります。

compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
|    +--- com.actionbarsherlock:actionbarsherlock:4.4.0
|    \--- com.commonsware.cwac:camera:0.5.4
\--- com.Android.support:support-v4:18.0.+ -> 18.0.0
298
CommonsWare

私は、Androidブロック内のbuild.gradleファイルに次のコードを追加することで、同様のエラーを解決しました。

Android {
    dexOptions {
        preDexLibraries = false
    }
}
123
mike.tihonchik

また、Android Studio Gradleビューに移動してターゲットの「androidDependencies」を選択することで、Androidの依存関係を確認できます。

もう1つのヒント:プロジェクトと私の関連するモジュール/ライブラリプロジェクトの両方のlibsフォルダからv4 support libを削除するまで、私はこの問題を抱えていました。

33
Ed Manners

から絵は千語の価値がある

この作業を私のような初心者でも簡単かつ迅速に行えるようにするため。これは私のために働いた@ edsappfactory.comによって投稿された答えを示すスクリーンショットです:

最初にAndroidstudioの右側にあるGradleビューを開き、アプリの項目でTasks、次にAndroidに移動してからandroidDependenciesを右クリックし、Runを選択します。

step 1

2番目あなたはこのような何かを見るでしょう:

Step 2

私がこれを投稿した主な理由は、gradleタスクや上記で投稿されたコマンドをどこで実行するかを知るのは容易ではなかったことです。だから、これも彼らを言い訳するところです。

そのため、gradleコマンドを実行します。

最初:

first

第二:

second

それは簡単です。

それでおしまい。

ありがとうございました。

32
MBH

ButterKnife 8.5.1にアップグレードすると、このエラーが発生し始めました。ここで他の答えのどれも私のために働きませんでした。

ツリーを見るためにgradle -q :app:dependenciesを使い、それから衝突が見つかるまでjarファイルを調べました。競合は、butterknifeのcom.Android.support:support-compat:25.1.0への依存関係にアクセシビリティクラスのバージョンが含まれ、com.Android.support:support-v4:23.1.1にもクラスが含まれることです。

私はこれから私の依存関係を変更することによってそれを解決しました:

compile 'com.jakewharton:butterknife:8.5.1'

これに:

compile('com.jakewharton:butterknife:8.5.1') {
    exclude module: 'support-compat'
}

これまでのところ、ButterKnifeの動作には影響しないようです。

編集:それより良い解決策があります、それは私のAndroidサポートライブラリをバターナイフのものと一致するようにアップグレードすることでした:

compile('com.Android.support:appcompat-v7:25.2.0')
compile('com.Android.support:design:25.2.0')
compile 'com.jakewharton:butterknife:8.5.1'
10
user3562927

誰かが CommonsWare からの答えがAndroidライブラリプロジェクトに適用できなかったことを知った場合、ここに修正するスニペットがあります

compile(project( ':yourAndroidLibrary')){除外モジュール: 'support-v13'}

あなたは問題を見つけるでしょう

サポートされていないGradle DSLメソッドが見つかりました: 'exclude()'

コンパイルプロジェクト( ':yourAndroidLibrary'){exclude module: 'support-v13'}を使用している場合

違いは、ブレスレット "(" ")"の前に "プロジェクト".

9
Tony Thompson

私は同じ問題を抱えていたし、それは私のアプリはライブラリのためにあまりにも多くのメソッドを持っていたようです: http://developer.Android.com/tools/building/multidex.html

でそれを解決しました:

Android {
   defaultConfig {
   ...
   multiDexEnabled = true
   }
}

詳細はこちら エラー:タスク ':app:dexDebug'の実行に失敗しました。 >コマンドがゼロ以外の終了値2 で終了しました

8
Giannis P
exclude module: 'support-v4'

プロジェクトに依存している私にとってはうまくいきませんでしたが、それをうまく機能させるには、次の構文を使用するしかありませんでした。

configurations {
    dependencies {
        compile(project(':Android-SDK')) {
            compile.exclude module: 'support-v4'
        }
    }
}

Android-SDKはあなたのプロジェクト名です。

7
Pellet

私はこれと同じエラーがありましたが、それは私が最近v4からv13への使用を変更したからです。だから私がしなければならなかったのはプロジェクトをきれいにすることだけでした。

6
ashishduh

従来のプロジェクトでも同じエラーが発生しました。私の欠点は、サポートライブラリが2回含まれていたことです。

これは私がそれを修正した方法です:

悪いbuild.gradle:

dependencies {
   compile files('libs/Android-support-v4.jar') 
   compile files('libs/core-2.2.jar')
   compile files('libs/universal-image-loader-1.8.5-with-sources.jar')
   compile 'com.google.Android.gms:play-services:3.2.65'
}

良いbuild.gradle:

dependencies {
   // compile files('libs/Android-support-v4.jar')  // not needed 
   compile files('libs/core-2.2.jar')
   compile files('libs/universal-image-loader-1.8.5-with-sources.jar')
   compile 'com.google.Android.gms:play-services:3.2.65'
}

誰かに役立つことを願っています:-)

5
voghDev

私の場合、問題はバージョンの不一致が原因でした。

Build tools 25
compileSdk 24
targetSdk 24
Support library 24

解決策は簡単でした:すべてをバージョン25にする

3
WindRider

同様のdex問題解決方法

gradle.buildに含まれていたもの:

compile files('libs/httpclient-4.2.1.jar')
compile 'org.Apache.httpcomponents:httpclient:4.5'
compile group: 'org.Apache.httpcomponents' , name: 'httpclient-Android' , version: '4.3.5.1'

削除したときに問題が解決しました

compile files('libs/httpclient-4.2.1.jar') 

私のgradleは次のようになります。

apply plugin: 'com.Android.application'

Android {

compileSdkVersion 24
buildToolsVersion "24.0.3"

defaultConfig {
    applicationId "com.mmm.ll"
    minSdkVersion 16
    targetSdkVersion 24
    useLibrary  'org.Apache.http.legacy'
}

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
    }
}
}

dependencies {

compile 'com.google.Android.gms:play-services:6.1.+'
compile files('libs/PayPalAndroidSDK.jar')
compile files('libs/ksoap2-Android-Assembly-3.0.0-RC.4-jar-with-dependencies.jar')
compile files('libs/picasso-2.1.1.jar')
compile files('libs/gcm.jar')
compile 'com.Android.support:appcompat-v7:24.2.1'
compile 'org.Apache.httpcomponents:httpclient:4.5'
compile group: 'org.Apache.httpcomponents' , name: 'httpclient-Android' , version: '4.3.5.1'
}

JARファイルとコンパイル済みgradleプロジェクトに冗長性がありました

それで、同じクラスを持つ依存関係とjarファイルを鋭く探してください。

そして冗長性を取り除きます。
これは私にとって役に立ちました。

3
shiny vn

これは厄介な問題で、根本的な問題を見つけるのに時間がかかることがあります。あなたが進むべき道は@ CommonsWare答えです。

私は最近この問題に直面し、解決するのが難しいと感じました。

私の問題は私がbuild.gradleに "+"バージョンでライブラリを含めていたことでした。最新版のライブラリには、以前のdexとbangのいずれかが含まれていました。

私は古いバージョンのライブラリに戻して解決しました。

AndroidDependenciesを実行して実際に何が起こっているのかを確認するのは良いことです。ビルドフォルダを検索するのも良いでしょう。

とりわけAndroid Studio 2.2はこの問題を追跡するためのビルド機能を提供します。

ハッピーコーディング人

2
Arun C

Android Studioでbuild.gradle(プロジェクトとモジュールの両方のbuild.gradleファイルを確認してください)に移動し、重複した依存関係を検索します。

プロジェクトに必要のないものを削除します。

2
KadoLakatt

Gradleキャッシュからすべてのファイルを削除すると問題が解決しました。

linuxの場合

rm -rf ~/.gradle/caches/*
2
Yuliia Ashomok

プロジェクトをEclipseからインポートした場合Eclipse

1. The select project 
2. Go to File -> **Project Structure**
3. Select app in **module** section on left hand panel
4. Select **Dependency** tab
5. Your able to see jars you have added in Eclipse project for v4 and v13.
6. Remove that jar by clicking on minus sign at bottom after selection
7. Click on Plus sign select **Library Dependency** 
8. Choose V4 and V13 if added
9. Press Ok and Clean and Rebuild your project

EclipseプロジェクトをAndroidスタジオにインポートした後に直面したシナリオ。

お役に立てれば..

2

私はcom.google.Android.gms:play-services-analytics:8.3.0Android-support-v13.jarを使っていて、exclude module: 'support-v4'を動かすことができませんでした。

私にとってうまくいったのはAndroid-support-v13ファイルではなくAndroid-support-v13.jarアーティファクトを使っていたことです。

すなわちの代わりに

dependencies {
compile ('com.google.Android.gms:play-services-analytics:8.3.0')
compile files('libs/Android-support-v13.jar')

}

私が使った

dependencies {
compile ('com.google.Android.gms:play-services-analytics:8.3.0')
compile ('com.google.Android:android-support-v13')

}

2
barry

依存関係の中のコンパイル 'com.Android.support:support-v4:18.0.+'を削除しました、そしてそれは働きます

1
albert

私は同じ問題を抱えていました、そして私の解決策はサポートバージョン '27。+'(27.1.0)を '27 .0.1'に変更することです。

0
Mingyong Gu

私は単に追加することで、反応するネイティブプロジェクトの問題を解決することができました

configurations {
        all*.exclude group: 'com.Android.support', module: 'support-compat'
        all*.exclude group: 'com.Android.support', module: 'support-core-ui'
    }

android\app\build.gradleファイルの最後

0
Yusuf Khan

私は同じ問題を抱えています。私のプロジェクトでは、次のような依存関係がありました。

  • appcompat-v7
  • Android-support-v13

従来の理由から、appcompatはGoogle Mavenリポジトリから取得されましたが、Androidのサポートはローカルの.jarでした。

私がこれを考え出し、このローカルリファレンスをメーブンリファレンスに置き換えたとき、それは私のビルド問題を解決しました。

これが私のapp/build.gradleの差分です。

enter image description here

0
kall2sollies

私のプロジェクトにreact-native-paletteを追加するとき、私は同じ問題を抱えていました、これは私の依存関係ツリーです:

./gradlew app:dependencies
+--- project :react-native-palette
|    +--- com.facebook.react:react-native:0.20.+ -> 0.44.2
|    |    +--- javax.inject:javax.inject:1
|    |    +--- com.Android.support:appcompat-v7:23.0.1
|    |    |    \--- com.Android.support:support-v4:23.0.1
|    |    |         \--- com.Android.support:support-annotations:23.0.1 -> 24.2.1
...
|    \--- com.Android.support:palette-v7:24.+ -> 24.2.1
|         +--- com.Android.support:support-compat:24.2.1
|         |    \--- com.Android.support:support-annotations:24.2.1
|         \--- com.Android.support:support-core-utils:24.2.1
|              \--- com.Android.support:support-compat:24.2.1 (*)
+--- com.Android.support:appcompat-v7:23.0.1 (*)
\--- com.facebook.react:react-native:+ -> 0.44.2 (*)

com.Android.support:appcompatAndroid/app/build.gradleバージョンを変更するまで、私は多くの解決策を試して修正することができませんでした。

dependencies {
    compile project(':react-native-palette')
    compile project(':react-native-image-picker')
    compile project(':react-native-camera')
    compile fileTree(dir: "libs", include: ["*.jar"])
    // compile "com.Android.support:appcompat-v7:23.0.1"
    compile "com.Android.support:appcompat-v7:24.2.1"
    compile "com.facebook.react:react-native:+"
}

複数のエントリは大きな問題ではないようです、バージョンの不一致は

0
matrixer

これをproject.propertiesに追加することで、私のすべての問題を解決しました。

cordova.system.library.7=com.Android.support:appcompat-v7:27.1.0
0
eatmeimadanish

以下のエラーを受信しました

タスク ':app:transformDexArchiveWithDexMergerForDebug'の実行が失敗しました。

com.Android.build.api.transform.TransformException:com.Android.dex.DexException:複数のdexファイルがLandroid/support/constraint/ConstraintSetを定義しています$ 1

修正:[ビルド] - > [クリーンプロジェクト]に移動します

0
Ragunath CR

MinSdkVersionを21に増やし、マルチデックスを有効にすることでcompile file('...')の衝突を解決しました。それが最善の解決策であるかどうかわからないが、私の場合にはそれがうまくいくようにすることができる唯一の方法です。

注:compile file('...')の場合、exclude句を記述できないため、このオプションは使用できませんでした。

0
Ben Kleywegt

最後に、モジュールのgradleファイルでこれらの属性を変更して解決しました

  1. compileSdkVersion 25
  2. targetSdkVersion 25
  3. 'com.Android.support:appcompat-v7:+'をコンパイルしてください。
  4. 「com.Android.support:recyclerview-v7:+」をコンパイルします
0
Val Martinez