java.util.zip.ZipException:packageAllDebugClassesForMultiDex中の重複エントリ


117

このエラーの意味がわかりません。

Execution failed for task ':excelSior:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/util/TimeUtils.class

私は現在android-support-v4.jar自分のライブラリに使用しています

dependencies {
    compile project(':addThisSDK')
    compile project(':centeredContentButton')
    compile project(':googleplayservices_lib')
    compile files('libs/adxtag2.4.6.jar')
    compile files('libs/android-support-v4.jar')
    compile files('libs/aws-android-sdk-1.7.1.1-debug.jar')
    compile files('libs/commons-lang-2.6.jar')
    compile files('libs/crittercism_v4_4_0_sdkonly.jar')
    compile files('libs/dd-plist.jar')
    compile files('libs/FiksuAndroidSDK_4.1.1.jar')
    compile files('libs/iqengines-sdk-barcode.jar')
    compile files('libs/irEventTracker-1.2.jar')
    compile files('libs/jolt-core-0.0.7.jar')
    compile files('libs/json-utils-0.0.7.jar')
    compile files('libs/jsoup-1.7.2.jar')
    compile files('libs/kooaba-api-v4-java.jar')
    compile 'com.android.support:multidex:1.0.0'
}

Gradleの同期中にエラーが表示されません。アプリケーションを実行しようとしたとき

何が問題でしょうか?


1
エラーは、他のjar依存関係に同じクラスがある場合に発生します。gradleとjar依存関係の両方としてサポートjarを追加していないことを確認してください。完全な依存関係の閉鎖を質問に含めてください。
pyus13 2014年

@ pyus13ありがとう。質問を更新しました。これが私の全体の依存関係リストです
bman '17年

1
プロジェクトには3つのモジュールの依存関係があるため、それらのうち1つだけがsupport-v4の依存関係を持っていることを確認してください。
pyus13 2014年


エラー:タスク ':Mulugu Astro:transformClassesWithJarMergingForDebug'の実行に失敗しました。> com.android.build.api.transform.TransformException:java.util.zip.ZipException:duplicate entry:android / support / v4 / view / ViewPager $ MyAccessibilityDelegate.class
Harsha

回答:


64

v4ライブラリを挿入してライブラリをコンパイルしたことを確認する必要がありますか?アプリまたは依存プログラムでライブラリを繰り返さないでください。

リピートライブラリを削除して、V4が1つだけ残るようにします。

アプリのdir build.gradleファイルに次のコマンドを追加します。

android{


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

}

わたしにはできる!あなたはそれを試すことができます!


19
このフラグメントを追加した後、v4のサポートを取得できません。
Nisarg 2016年

@Nisargも私に起こります。
CJ_COIMBRA 2017年

@Nisargでは、gradleを使用してプログラムを再コンパイルできます。
GeekHades 2017

@Nisargもう一度再コンパイルする方法を教えてください、私もあなたと同じ問題があります。フラグメントとタスクスタックビルダーが解決を停止しました
Gaurav Arora

82

あなたはおそらくこれでこれを修正したでしょうが、これが未解決のままにならないように、これをあなたのに追加してみてくださいbuild.gradle

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

4
設定行を追加しましたが、それでも表示さError:Execution failed for task ':Analyst:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: com/android/vending/billing/IInAppBillingService$Stub$Proxy.classれます。
biswajitGhosh

2
どのように問題を修正しましたか?
Arslan Anwar

9
正しい解決策はありますか?同じ問題が発生していますjava.util.zip.ZipException:重複するエントリ:com / google / gson / annotations / Expose.class
RamBabu Pudari

2
エラー:(
5、30

1
これはどこに行くべきか、私はgradleに不慣れで、現在のプロジェクトには5つのbuild.gradleファイルがあり、それらのどれにも含まconfigurationsれておらず、どこに置いても問題ないようで、できないなどのエラーが発生しますシンボル「除外」を解決する、またはシンボル「すべて」を解決できない
JStephen

25

古いEclipseプロジェクトを再度インポートしたときにも、このような問題に遭遇しました。プロジェクトでjarファイルとして古い依存関係が発生しました。

削除するだけ

fileTree(dir: 'libs'、include: '* .jar')をコンパイルします

Gradleファイル

そしてgradleファイルに依存関係を追加します。

わたしにはできる ..


このエラーは、古いEclipseプロジェクトをインポートすると発生しました。実際には、参照ライブラリの一部を削除し、gradleファイルに同じ依存関係を追加しました。
Paraneetharan Saravanaperumal

1
私のために働いた(古いEclipse構成からもインポートする)。その後、クリーンとリビルドが必要でした。
Paco Abato 2016年

17
サウロンという名前の人を信頼する必要があるのはなぜですか?
matthias_b_nz 2016

この特定のエラーを停止しましたが、他の何十もの原因となりました。時々それらの依存関係が必要です。これは奇妙に聞こえるかもしれませんが、サウロンは今回正しかったです。
SMBiggs 2017

1
依存関係を1つずつ明示的に追加すると、.jar2回含めた重複ライブラリが明らかになる可能性があります。を使用しないでくださいcompile fileTree(...)。あまりにも多くの明らかなエラーが隠されます。
Joshua Pinter 2017年

13

私の場合multiDexEnable=true、build.gradleで設定した後、前述の「エントリの重複」エラーが発生しました。

エラーを完全に解決するには、最初に64Kを超えるメソッドを使用してアプリを構成する(特に「Gradleを使用するMultidex用にアプリを構成する」)をご覧ください。

さらに、Android Studioでctrl + nを使用して、「エントリの重複」エラーを引き起こすクラスの発生を検索します。重複を含むモジュールと依存関係を決定し、ビルドから除外します。例:

compile ('org.roboguice:roboguice:2.0') {
    exclude module: 'support-v4'
}

うまくいくまで、複数のモジュールラベルを試さなければなりませんでした。「support-v4」を除外すると、「java.util.zip.ZipException:duplicate entry:android / support / v4 / *」に関連する問題が解決されます


9

私の理解では、同じAPI(おそらくバージョン番号が異なる)への参照が重複しています。コマンドラインからビルドする場合、デバッグはかなり簡単でなければなりません。

./gradlew yourBuildVariantName --debugコマンドラインから試してください。

問題のアイテムは最初の失敗になります。例は次のようになります。

14:32:29.171 [INFO] [org.gradle.api.Task] INPUT: /Users/mydir/Documents/androidApp/BaseApp/build/intermediates/exploded-aar/theOffendingAAR/libs/google-play-services.jar

14:32:29.171 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':BaseApp:packageAllyourBuildVariantNameClassesForMultiDex'

14:32:29.172 [LIFECYCLE] [class org.gradle.TaskExecutionLogger] :BaseApp:packageAllyourBuildVariantNameClassesForMultiDex FAILED'

上記の場合、自分のlibsディレクトリ(theOffendingAAR)に含めたaarファイルには、Google Play開発者サービスのjar(すべてが含まれています。はい、わかっています)ファイルが含まれていますが、BaseAppビルドファイルは位置情報サービスを利用しています。

compile 'com.google.android.gms:play-services-location:6.5.87'

問題のあるアイテムをビルドファイルから安全に削除し、クリーンして再ビルドできます(必要に応じて繰り返します)。


1
では、問題のライブラリが必要な場合はどうなりますか?
Janusz 2015年

1
これは、問題のあるライブラリを追跡するのに役立ちました:)
speedynomads

1
これは役に立ちません。問題のあるライブラリを削除すると、モジュールはコンパイルに失敗します
Utsav Gupta

9

依存関係のバージョンを確認します。com.googleパッケージに特別な注意を払う互換性のあるバージョンが必要です。次のような同じバージョンが必要です。

compile 'com.google.android.gms:play-services:8.3.0'
compile 'com.google.android.gms:play-services-maps:8.3.0'

どちらも8.3.0です。別のバージョンを使用している場合、コンパイルするとその例外がスローされます。


おかげで、私は完璧に働いています、私は3つの異なるGoogle Playサービスをコンパイルします 'com.google.android.gms:play-services-analytics:8.4.0'コンパイル 'com.google.android.gms:play-services-ads:8.3 .0 'コンパイル' com.google.android.gms:play-services-plus:8.4.0 '
Samadhan Medge

5

単純にJarファイルを依存関係gardle.projectからv7として削除し、プロジェクトを実行します


それは私にとっては仕事です、単に「build.gradle(Module:app)」の「dependencies」から「compile files( 'libs / android-support-v13.jar')」を削除してください。参考までに、Android Studioにプロジェクトフォームの日食をインポートした後にこのエラーが発生します。
rafaellorey 2016


3

libがサポートv4に依存していることを確認し、それを除外します。

のコードbuild.gradleは次のとおりです:

androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.1') {
    // http://stackoverflow.com/a/30931887/5210
    exclude group: 'com.android.support', module: 'appcompat'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude module: 'recyclerview-v7'
}

私の状況では、ライブラリ「espresso」にはsupport-v4というjarがあり、プロジェクト「app」には同じsupport-v4があります。espressoをインポートするときにsupport-v4を除外します。

PS:それはで動作compile projectすることができないようですexclude


1

これは、ライブラリを追加し、モジュールへの依存関係を2回以上指定したためです。

私の場合、モジュールとGradle依存関係の両方としてライブラリを追加しました。

ライブラリを追加するソースを1つ削除した(gradleの依存関係を削除した)ことで、問題が解決しました。


あるいは、この問題は、jarをlibs dirから削除し、gradleの依存関係を維持することで修正されました。
droideckar 2017

うん!単一のソースを削除すると問題が発生します。Gradle依存を維持することは良いことです。
Rahul Rastogi

0

エラーの場合:タスク ':app:transformClassesWithJarMergingForDebug'の実行に失敗しましたcom.android.build.api.transform.TransformException java.util.zip.ZipException duplicate entry com / google / gson / annotations / Expose.class

これが私がしたことです:

1)gson-2.5.jarファイルを削除します。2)構成{all * .exclude module: 'gson-2.5'}


Gsonに関する質問ではありませんでした
OneCricketeer 2017

0

jarをlibsに手動でコピーし、gradleファイルの依存関係について言及したため、この問題に直面しました。また、同じjarファイルがlibsなどの他のフォルダーやプロジェクトフォルダーにコピーされているかどうかをプロジェクト構造で確認します。


0

Android SDKをアップグレードした後も同じ問題が発生しました。でアプリケーションを実行できましたが、buildToolsVersion '23.0.1'に変更すると同じエラーが発生しましたbuildToolsVersion '24.0.3'

でJavaバージョンを1.7から1.8に更新することで問題を解決しました compileSdkVersion 24


0

この問題は私に丸一日かかった。最後に、firebase-uiライブラリのバージョンを2.0.0から1.2.0にダウングレードし、プロジェクトレベルのbuild.gradleファイル内に次のコードを追加しました。

allprojects {
    repositories {
        jcenter()

        // Add the following code to your project level build.gradle
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
}

1
Firebase UIのバージョンは、実際にコンパイルしたFirebaseのバージョンによって異なります
OneCricketeer 2017

0

'com.android.support:appcompat-v7:24.0.0-alpha1'をコンパイルしたので問題もありますが、recyclerviewライブラリコンパイル 'com.android.support:recyclerview-v7:24.0.2'を追加しました。 compatのようにバージョンを変更しました(24.0.0の代わりに24.0.2)。

私は答えを得ました。誰かのために役立つかもしれません。


0

私の場合、build.gradleでmultiDexEnable = trueを設定した後、前述の「エントリの重複」エラーが発生しました。

そして私が得ていた正確なエラーは以下でした:

Error:Execution failed for task 
':android:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: 
java.util.zip.ZipException: duplicate entry: 
com/google/android/gms/internal/zzqx.class

したがって、Android Studioでctrl + nを使用して「重複エントリ」エラーを引き起こすクラスを最初に検索し、com / google / android / gms / internal / zzqx.classを検索すると、1つのバージョンのgmsクラスの2つのエントリが表示されました8.4.0および1とバージョン11.6.0。

それを修正するために、11.6.0を使用するように両方を作成し、修正された例です

ついさっき

    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:8.4.0"
    compile "com.google.android.gms:play-services-ads:11.6.0"

    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:11.6.0"
    compile "com.google.android.gms:play-services-ads:11.6.0"

再構築の修正。


0

私の場合、正確なエラーは以下でした

':android:transformClassesWithJarMergingForDebug'。

com.android.build.api.transform.TransformException:java.util.zip.ZipException:重複したエントリ:com / google / android / gms / internal / zzqx.class

私は別のバージョンのGoogle APIを使用していました。つまり、1つのモジュールのGradleファイルで

if (!project.hasProperty('gms_library_version')) {
        ext.gms_library_version = '8.6.0'
   }

ただし、以下のように他のモジュールバージョン11.6.0では

   compile "com.google.android.gms:play-services-ads:11.6.0"
    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:11.6.0"

しかし、これを見つけるためにandroidスタジオでctrl + nを実行し、クラス名zzqx.classを入力すると、このクラスに対して2つのjarファイルがプルされて表示され、バージョン8.6.0をどこかで使用していることがわかりました。8.6.0を11.6.0に変更してプロジェクトを再構築すると、問題が修正されました。

お役に立てれば 。

詳細はこちら https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/


0

私にとっては、誤って追加したときに同様のことが起こりました

apply plugin: 'kotlin-android'

私のアンドロイドライブラリモジュールに。行を削除すると、問題が修正されます。


0

上記の解決策をすべて試しましたが、うまくいきませんでした。gotoプロジェクト構造>アプリでライブラリを更新してみました。そしてそれは私のために働きます!この回答が誰かのお役に立てば幸いです。


-1

これを試して:

android {
configurations {
        all*.exclude  module: 'PhotoView'  //去除重复依赖库
    }
}

この質問はPhotoViewではなく、サポートv4ライブラリについてです
OneCricketeer

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.