android 文字色 - 複数のdexファイルで 'AnimRes'が定義されているためbuildToolsVersion 23を使用すると失敗する



タイトル 中央 (3)

あなたがDUPLICATEを請求する前に質問を読んでください。

これは最新バージョンのビルドツールでのみ発生します。 古いバージョンではこの問題は見られません。 @AnimRes複数の定義について、ここで他の質問で提供されている解決策をすでに試しました。 これまで何の助けにもならなかったので、私は新しい質問を投稿しました。 同じ症状、さまざまな原因、さまざまな解決策。

buildToolsVersion 22.0.1を使用すると問題なくビルドできますが、 buildToolsVersion 23に切り替えるとビルドがエラーで失敗します

予期しないトップレベルの例外:com.android.dex.DexException:複数のdexファイルがLandroid / support / annotation / AnimResを定義しています。 com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)com.android.dx.merge.DexMerger.mergeClassDefs (DexMerger.java:535)、com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)、com.android.dx.merge.DexMerger.merge(DexMerger.java:189)com.android com.android.dx.command.dexer.Mainのcom.android.dx.command.dexer.Main.runMonoDex(Main.java:334)のdx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)。 com.android.dx.command.Main.main(Main.java:106)でcom.android.dx.command.dexer.Main.main(Main.java:245)で(Main.java:277)を実行します。

これは私の依存関係のリストです:

provided 'org.projectlombok:lombok:1.16.4'
compile 'com.android.support:support-v4:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:support-v13:23.0.0'
compile 'com.android.support:cardview-v7:23.0.0'
compile 'com.android.support:palette-v7:23.0.0'
compile 'com.google.code.findbugs:jsr305:2.0.1'
compile 'com.google.guava:guava:18.0'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'org.apache.commons:commons-lang3:3.4'
compile 'commons-io:commons-io:2.4'
compile 'commons-codec:commons-codec:1.10'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.squareup:otto:1.3.8'
compile 'org.jsoup:jsoup:1.7.2'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
compile 'com.squareup.okio:okio:1.5.0'
compile 'com.flaviofaria:kenburnsview:1.0.6'
compile 'com.edmodo:cropper:1.0.1'
compile 'com.getbase:floatingactionbutton:1.10.0'
compile 'com.nispok:snackbar:2.10.10'
compile 'com.github.ksoichiro:android-observablescrollview:1.5.2'
compile 'in.srain.cube:grid-view-with-header-footer:1.0.12'
compile 'de.hdodenhof:circleimageview:1.3.0'

すべての人(Espressoを含む)が同じバージョンのsupport-annotationsを使用するようにするために、私は自分のビルドファイルに次のものを追加しました。

configurations.all {
  resolutionStrategy.force 'com.android.support:support-annotations:23.0.0'
}

これを削除すると他の障害が発生します。

これはビルドツールのバグの可能性がありますか、それとも私は何か問題がありますか? dexOptions Incremental falseを設定してみました。 役に立ちませんでした。

./gradlew -q app:dependenciesを使用すると、次のようになります。

+--- com.android.support:support-v4:23.0.0
|    \--- com.android.support:support-annotations:23.0.0
+--- com.android.support:appcompat-v7:23.0.0
|    \--- com.android.support:support-v4:23.0.0 (*)
+--- com.android.support:support-v13:23.0.0
|    \--- com.android.support:support-v4:23.0.0 (*)
+--- com.android.support:cardview-v7:23.0.0
+--- com.android.support:palette-v7:23.0.0
|    \--- com.android.support:support-v4:23.0.0 (*)
+--- com.google.code.findbugs:jsr305:2.0.1
+--- com.google.guava:guava:18.0
+--- com.github.chrisbanes.photoview:library:1.2.3
|    \--- com.android.support:support-v4:19.+ -> 23.0.0 (*)
+--- org.apache.commons:commons-lang3:3.4
+--- commons-io:commons-io:2.4
+--- commons-codec:commons-codec:1.10
+--- com.jakewharton:butterknife:7.0.1
+--- com.squareup:otto:1.3.8
+--- org.jsoup:jsoup:1.7.2
+--- com.squareup.picasso:picasso:2.5.2
+--- com.squareup.retrofit:retrofit:1.9.0
|    \--- com.google.code.gson:gson:2.3.1
+--- com.squareup.okhttp:okhttp:2.4.0
|    \--- com.squareup.okio:okio:1.4.0 -> 1.5.0
+--- com.squareup.okhttp:okhttp-urlconnection:2.4.0
|    \--- com.squareup.okhttp:okhttp:2.4.0 (*)
+--- com.squareup.okio:okio:1.5.0
+--- com.flaviofaria:kenburnsview:1.0.6
+--- com.edmodo:cropper:1.0.1
+--- com.getbase:floatingactionbutton:1.10.0
|    \--- com.android.support:support-annotations:22.2.0 -> 23.0.0
+--- com.nispok:snackbar:2.10.10
|    +--- com.android.support:recyclerview-v7:22.0.0
|    |    +--- com.android.support:support-v4:22.0.0 -> 23.0.0 (*)
|    |    \--- com.android.support:support-annotations:22.0.0 -> 23.0.0
|    \--- com.android.support:support-annotations:22.0.0 -> 23.0.0
+--- com.github.ksoichiro:android-observablescrollview:1.5.2
|    \--- com.android.support:recyclerview-v7:21.0.0 -> 22.0.0 (*)
+--- in.srain.cube:grid-view-with-header-footer:1.0.12
\--- de.hdodenhof:circleimageview:1.3.0

Answers

更新supportディレクトリがrenderscript-v8.jar含まれなくなったため、23.0.1バージョンのビルドツールで修正されています

原因は、ビルドツールに含まれているrenderscript-v8.jarバージョンです。

私はこのtree出力がすべてを伝えていると思います。

C:.
├───renderscript-v8-22.0.01
   ├───android
      └───support
          └───v8
              └───renderscript
   └───META-INF
└───renderscript-v8-23
    ├───android
       └───support
      ***  ├───annotation
           └───v8
               └───renderscript
    └───META-INF

私はそれらのディレクトリをそれらを含んだビルドツールのバージョンでタグ付けしました。 renderscript-v8-23存在しないrenderscript-v8-23 annotationsサブディレクトリにrenderscript-v8-23 renderscript-v8-22.0.01

https://code.google.com/p/android/issues/detail?id=179493ここでも問題の報告がありhttps://code.google.com/p/android/issues/detail?id=181697


私はこの解決策を理解していると言うことはできません - またはそれは必然的に良い解決策ですが、それは私のアプリを再びコンパイルさせました:

configurations.all {
    exclude group: 'com.android.support', module: 'support-annotations'
}

また、以下も参照してください。 レンダリングスクリプトサポートライブラリを使用すると、Multiple dexエラーが発生する

このソリューションのLubošStaráček氏の功績


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

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





android android-gradle android-support-library