gradle note - 複数のdexファイルはLandroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompatを定義します




studio 27.1 (21)

同様の 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ファイルを鋭く探します。

冗長性を取り除く。
これは私のために働いた。

コマンドラインから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を再実行すると常にそこに現れます。

ビルドディレクトリ内でr7をgrepすると、ファイル内に表示されます。

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

v13が含まれていないと、他のものはコンパイルされません。

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

これは、プレイサービスのAARバンドルとv13ライブラリとの間に互換性がありませんか?

私はgradleplease.appspot.comからgradleファイルをつかんだ。

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

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'
}

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

コンパイル(project( ':yourAndroidLibrary')) {除外モジュール: 'support-v13'}

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

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

コンパイルプロジェクト( ':yourAndroidLibrary') {除外モジュール: 'support-v13'}

違いは、 "project"の前のブレスレット"("") "です。


Aの絵は1000語の価値があるので

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

まず 、Androidstudioの右側にあるGradleビューを開き、アプリケーションの項目でTasks ] androidDependencies [ Android ]を選択し、 androidDependencies右クリックして[ Run ]を選択しRun

次に、あなたはこのようなものを見るでしょう:

その主な理由は、私はこれを投稿して、 gradleタスクや上記のコマンドを実行する場所を知ることは容易ではなかったということです。 それで、これはそれらをexcuteする場所です。

したがって、gradleコマンドを実行する:

最初:

二番目:

それは簡単です。

それでおしまい。

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


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


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

  1. compileSdkVersion 25
  2. targetSdkVersion 25
  3. コンパイル 'com.android.support:appcompat-v7:+'
  4. コンパイル 'com.android.support:recyclerview-v7:+'

これは厄介な問題であり、根本的なケースを見つけるのに時間がかかることがあります。 あなたが進めるべき方法は、@ CommonSWareの答えです。

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

私の問題は、build.gradleに "+"バージョンのライブラリを含めることでした。 ライブラリの最新版には古いデクスターとバングが含まれていました。

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

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

とりわけAndroid Studio 2.2では、この問題を追跡するための機能が用意されています。

ハッピーコーディングガイズ


私の場合、この問題はバージョンの不一致が原因です:

Build tools 25
compileSdk 24
targetSdk 24
Support library 24

ソリューションはシンプルだった:すべてをバージョン25にする


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


私は依存関係の中で 'com.android.support:support-v4:18.0.+'コンパイルを削除して動作します


私はプロジェクトにreact-native-paletteを追加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 (*)

android/app/build.gradlecom.android.support:appcompatバージョンを変更するまで、私は多くのソリュトンを試してみましたが、修正できませんでした。

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:+"
}

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


minSdkVersionを21に増やしてmultidexを有効にすることで、 compile file('...')競合が発生しました。 それが最善の解決策であるかどうかはわかりませんが、私の場合はそれを実現する唯一の方法です。

注: compile file('...')では、 exclude句を入れることができないため、オプションを使用できないように見えます。


私も同じ問題がありました。 私のプロジェクトでは、以下の依存関係がありました。

  • appcompat-v7
  • android-support-v13

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

私がこれを理解し、このローカルリファレンスをmavenリファレンスに置き換えたら、ビルドの問題を解決しました。

私のapp / build.gradleの違いは次のとおりです:


ButterKnife 8.5.1にアップグレードするときにこのエラーが発生しました。 他の回答は私のために働いていませんでした。

私はgradle -q :app:dependenciesを使ってツリーを見てから、競合が見つかるまでjarファイルを調べました。 競合は、バナーナイフの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の操作には影響していないようです。

編集:私のアンドロイドサポートライブラリをバターナイフに合わせてアップグレードするという、より良い解決策があります:

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

また、アンドロイドのスタンドアロンビューに移動し、ターゲットの「androidDependencies」を選択することで、アンドロイドの依存関係を確認できます。

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


私はcom.google.android.gms:play-services-analytics:8.3.0android-support-v13.jarおり、 exclude module: 'support-v4'が動作しませんでした。

私にとっては、 android-support-v13.jarファイルではなく、 android-support-v13アーティファクトを使用していました。

それの代わりに

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')

}


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

cordova.system.library.7=com.android.support:appcompat-v7:27.1.0

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

android {
    dexOptions {
        preDexLibraries = false
    }
}


次のエラーを受け取りました

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

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

修正:ビルド - >プロジェクトのクリーンアップ


gradle -q :projectName:dependencies 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







android gradle android-support-library android-gradle