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




13 Answers

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
studio 27.1

コマンドラインから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'
}



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

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




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

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

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

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

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

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




私は同じ問題を抱えていて、ライブラリのために私のアプリにメソッドが多すぎるようです: http://developer.android.com/tools/building/multidex.html : http://developer.android.com/tools/building/multidex.html

それを解決しました:

android {
   defaultConfig {
   ...
   multiDexEnabled = true
   }
}

その他のエラー: ':app:dexDebug'タスクの実行に失敗しました。 > comcommandがゼロ以外の終了値2で終了しました




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




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

Build tools 25
compileSdk 24
targetSdk 24
Support library 24

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




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スタジオにインポートした後に直面したシナリオ。

お役に立てれば..




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

Linuxの場合:

cd ~/.gradle  
rm -R -f *



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

あなたのプロジェクトが必要としないものを削除してください。




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

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



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

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




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

  • appcompat-v7
  • android-support-v13

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

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

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




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

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

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

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




Related

android gradle android-support-library android-gradle