web-dev-qa-db-ja.com

Zipエントリの複製[classes.jar:Android / support / design / widget / CoordinatorLayout $ Behavior.class]

次の依存関係があり、CoordinatorLayout$Behaviorエントリが重複しています。さらに検索しましたが、解決策が見つかりませんでした。

私は得ています

Caused by: Java.io.IOException: Duplicate Zip entry [classes.jar:Android/support/design/widget/CoordinatorLayout$Behavior.class]
at proguard.io.JarWriter.getOutputStream(JarWriter.Java:138)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.Java:106)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.Java:106)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.Java:92)
at proguard.io.ClassRewriter.read(ClassRewriter.Java:68)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.Java:87)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.Java:87)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.Java:87)
at proguard.io.JarReader.read(JarReader.Java:65)
at proguard.io.DirectoryPump.readFiles(DirectoryPump.Java:65)
at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.Java:53)
at proguard.InputReader.readInput(InputReader.Java:184)
... 50 more

コアUIはどこにありますか?これが問題になると思います。このライブラリの1つを除外する必要がある場所を誰でも知ることができますか?

私はすべてのライブラリを探索し、次のシーンを持っています。

enter image description here

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
//    compile('com.mikepenz:materialdrawer:5.8.0@aar') {
//        transitive = true
//    }
compile 'com.Android.support:multidex:1.0.2'
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.2'
compile 'com.Android.support:appcompat-v7:27.0.0'
compile 'com.Android.support:support-v4:27.0.0'
compile 'com.Android.support:recyclerview-v7:27.0.0'
compile 'com.Android.support:design:27.0.0'
compile 'com.Android.support:cardview-v7:27.0.0'
compile 'com.google.Android.gms:play-services-gcm:11.8.0'
compile 'com.google.Android.gms:play-services-location:11.8.0'
compile 'com.google.Android.gms:play-services-auth:11.8.0'
compile 'com.pnikosis:materialish-progress:1.7'
compile 'de.hdodenhof:circleimageview:2.2.0'
compile 'com.github.rey5137:material:1.2.4'
compile 'org.Apache.commons:commons-lang3:3.6'
compile 'com.afollestad.material-dialogs:core:0.9.5.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.loopj.Android:android-async-http:1.4.9'
compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
compile 'com.bignerdranch.Android:expandablerecyclerview:3.0.0-RC1'
compile 'com.github.travijuu:numberpicker:1.0.7'
compile 'com.github.carlosmuvi:SegmentedProgressBar:0.6.0'
compile 'com.nex3z:notification-badge:0.3.0'
compile 'com.bogdwellers:pinchtozoom:0.1'
compile 'com.theartofdev.edmodo:Android-image-cropper:2.6.0'
compile 'com.aurelhubert:ahbottomnavigation:2.1.0'
testCompile 'junit:junit:4.12'
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
compile files('libs/PGSDK_V2.1.jar')
compile 'com.facebook.Android:facebook-Android-sdk:[4,5)'
compile 'com.race604.waveloading:library:1.1.1'
compile 'com.karumi:dexter:4.2.0'
compile 'com.msg91.sendotp.library:library:3.1'
}
15
Bhavesh Hirpara

私はそれを好きでした。それは今働いています

ソリューション1

compile 'com.Android.support:appcompat-v7:27.1.0'
compile 'com.Android.support:support-v4:27.1.0'
compile 'com.Android.support:recyclerview-v7:27.1.0'
compile 'com.Android.support:design:27.1.0'
compile 'com.Android.support:cardview-v7:27.1.0'

ソリューション2(新規)

コードをAndroidXに移行する

enter image description here

35
Bhavesh Hirpara

Project view-> External Librariesを使用する以外に、gradleコマンドを使用して、検索のために依存関係をtxtファイルに出力します。 Macでは./gradlew、Windowsではgradlew.batを使用します。

$ ./gradlew -q :app:dependencies > dependencies.txt

dependencies.txtで、たとえば「検索」を使用して「デザイン」と入力し、強調表示されているすべてのライブラリとそのバージョン番号を確認します。いくつかのSOの投稿から、重複した依存関係を除外することを提案しています。依存関係が別の依存関係に含まれる場合(たとえば、com.Android.support:cardview-v7com.firebaseui:firebase-ui-authに含まれます)、 app/build.gradleからその依存関係を省略します。

私のグラドルからこれらの依存関係を削除して、プロジェクトを修正しました:

implementation 'com.Android.support:appcompat-v7:27.1.0'
implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
implementation 'com.Android.support:support-vector-drawable:27.1.0'
implementation 'com.Android.support:cardview-v7:27.1.0'

私はこれを保持します(そして27.0.2から27.1.0にアップグレードします):

implementation 'com.Android.support:design:27.1.0'

次の依存関係に除外を追加します。

implementation 'com.firebaseui:firebase-ui-auth:3.1.2', {
    exclude group: 'Android.Arch.lifecycle', module: 'extensions'
    exclude group: 'com.Android.support', module: 'design'
}
implementation 'com.romandanylyk:pageindicatorview:1.0.0', {
    exclude group: 'com.Android.support', module: 'support-core-ui'
}

依存関係を追加/削除した後、ライフサイクルの問題が発生しました。別のSO投稿は、ライブラリの2つの異なるバージョンが含まれていることを示唆しています。そのため、ステップ1で出力ファイルを更新し、以下を確認します。

+--- 'com.google.firebase:firebase-core:11.8.0'
|    +--- 'Android.Arch.lifecycle:runtime:1.1.0' 

+--- 'com.firebaseui:firebase-ui-auth:3.1.2'
|    +--- 'Android.Arch.lifecycle:extensions:1.0.0'

コンパイルの問題を解決するAndroid.Arch.lifecycle:extensionsを除外します。

6
John Pang

これを実行してアプリの依存関係を表示します

_gradlew -q :app:dependencies > dependencies.txt
_

大きなツリーが出力されます。

  • (*)は、特定の依存関係がツリー内のどこかに記述されていることを示すために使用されます
  • ->(矢印)は、バージョンの競合においてwinsの依存関係を示すために使用されます。デフォルトでは、gradleは最新バージョンを選択します。

出力:

_+--- com.Android.support:design:26.1.0
|    +--- com.Android.support:support-v4:26.1.0 (*)
|    +--- com.Android.support:appcompat-v7:26.1.0 -> 27.1.1 (*)
|    +--- com.Android.support:recyclerview-v7:26.1.0 (*)
|    \--- com.Android.support:transition:26.1.0
|         +--- com.Android.support:support-annotations:26.1.0 -> 27.1.1
|         \--- com.Android.support:support-v4:26.1.0 (*)
_

私の場合、_com.Android.support:design:26.1.0_はcom.Android.support:appcompat-v7:26.1.0 -> 27.1.1 (*)に依存しており、26.1.0ではなく27.1.1に解決されていることがわかりました。

Solutiongradle compile ("com.Android.support:appcompat-v7:26.1.0") { force = true }で宣言することにより、バージョン26.1.0を強制する

参考文献

5
pumnao
implementation 'com.Android.support:appcompat-v7:27.0.0'
implementation 'com.Android.support:support-v4:27.0.0'
implementation 'com.Android.support:design:27.0.0'
implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
implementation 'com.intuit.sdp:sdp-Android:1.0.4'
implementation 'com.Android.volley:volley:1.1.1'
implementation 'com.Android.support:cardview-v7:27.0.0'
implementation 'com.Android.support:recyclerview-v7:27.0.0'
0
sanjay sawan