java.util.zip.ZipException: รายการที่ซ้ำกันระหว่าง packageAllDebugClassesForMultiDex


118

ฉันไม่แน่ใจว่าข้อผิดพลาดนี้หมายถึงอะไร

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

ข้อผิดพลาดไม่ปรากฏขึ้นระหว่างการซิงก์ชั้นประถมศึกษาปีที่ เมื่อฉันพยายามเรียกใช้แอปพลิเคชัน

อะไรคือปัญหา?


1
ข้อผิดพลาดเกิดขึ้นเมื่อการพึ่งพา jar อื่น ๆ ของคุณมีคลาสเดียวกันตรวจสอบให้แน่ใจว่าคุณไม่ได้เพิ่ม jar การสนับสนุนทั้งแบบ gradle และ jar dependency โปรดระบุการปิดการอ้างอิงที่สมบูรณ์ในคำถาม
pyus13

@ pyus13 ขอบคุณ. ฉันได้อัปเดตคำถามแล้ว นี่คือรายการพึ่งพาทั้งหมดของฉัน
bman

1
คุณมีการพึ่งพาโมดูล 3 โมดูลในโปรเจ็กต์ของคุณดังนั้นตรวจสอบให้แน่ใจว่ามีเพียงหนึ่งในทั้งหมดเท่านั้นที่มีการสนับสนุน -v4 เป็นการอ้างอิง
pyus13

โปรดดูคำตอบของฉันที่: stackoverflow.com/questions/28168063/…
Tomer

ข้อผิดพลาด: การดำเนินการล้มเหลวสำหรับงาน ': Mulugu Astro: transformClassesWithJarMergingForDebug' > com.android.build.api.transform.TransformException: java.util.zip.ZipException: รายการที่ซ้ำกัน: android / support / v4 / view / ViewPager $ MyAccessibilityDelegate.class
Harsha

คำตอบ:


64

คุณต้องตรวจสอบว่าคุณได้แทรกไลบรารี v4 และคอมไพล์ไลบรารีหรือไม่? คุณต้องไม่ใช้ไลบรารีซ้ำในแอพของคุณหรือโปรแกรมการพึ่งพาของคุณ

ลบไลบรารีที่ทำซ้ำเพื่อให้ V4 เหลืออยู่เพียงตัวเดียว

ในbuild.gradleไฟล์dir แอปของคุณเพิ่มคำสั่งนี้:

android{


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

}

มันได้ผลสำหรับฉัน! คุณสามารถลอง!


19
หลังจากเพิ่มชิ้นส่วนนี้ไม่สามารถรับการสนับสนุน v4 ได้มีความคิดอย่างไร
Nisarg

@Nisarg ยังเกิดขึ้นกับฉัน
CJ_COIMBRA

@Nisarg คุณสามารถใช้โปรแกรม gradle recompile ได้
GeekHades

@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) ข้อผิดพลาด: ไม่มีแพ็คเกจ android.support.v4.app รับข้อผิดพลาดนี้หลังจากเพิ่มคำตอบของคุณ
Ankit Thakkar

1
สิ่งนี้ควรจะไปที่ไหนฉันยังใหม่กับ gradle และมีไฟล์ build.gradle 5 ไฟล์ในโปรเจ็กต์ปัจจุบันของฉันไม่มีไฟล์เหล่านี้configurationsอยู่ในนั้นและดูเหมือนจะไม่สำคัญว่าฉันจะวางไว้ที่ไหนฉันได้รับข้อผิดพลาดเช่นไม่สามารถทำได้ แก้ไขสัญลักษณ์ 'ไม่รวม' หรือไม่สามารถแก้ไขสัญลักษณ์ 'ทั้งหมด'
JStephen

25

ฉันยังพบปัญหาประเภทนี้เมื่อนำเข้าโครงการ eclipse เก่าอีกครั้ง เกิดการพึ่งพาเก่าเป็นไฟล์ jar ในโครงการ

เพียงแค่ลบ

คอมไพล์ fileTree (dir: 'libs', include: '* .jar')

ในไฟล์ gradle

และเพิ่มการอ้างอิงในไฟล์ gradle

มันใช้ได้กับฉัน ..


ข้อผิดพลาดนี้เกิดขึ้นเมื่ออิมพอร์ตโปรเจ็กต์ eclipse เก่าขออภัยจริง ๆ แล้วฉันลบไลบรารีอ้างอิงบางส่วนและเพิ่มการอ้างอิงเดียวกันในไฟล์ gradle
Paraneetharan Saravanaperumal

1
ทำงานให้ฉัน (ยังนำเข้าจากการกำหนดค่า eclipse เก่า) หลังจากนั้นจำเป็นต้องทำความสะอาดและสร้างใหม่
Paco Abato

17
ทำไมฉันต้องเชื่อใจคนที่ชื่อเซารอน
matthias_b_nz

หยุดข้อผิดพลาดเฉพาะนี้ แต่ทำให้เกิดข้อผิดพลาดอื่น ๆ อีกมากมาย บางครั้งคุณต้องการการพึ่งพาเหล่านั้น คราวนี้เซารอนพูดถูก
SMBiggs

1
ด้วยการเพิ่มการอ้างอิงของคุณอย่างชัดเจนทีละรายการคุณอาจพบ.jarไลบรารีที่ซ้ำกันซึ่งคุณรวมไว้สองครั้ง อย่าใช้compile fileTree(...)มันซ่อนข้อผิดพลาดที่ชัดเจนมากเกินไป
Joshua Pinter

13

ในกรณีของฉันข้อผิดพลาด "รายการซ้ำ" ที่กล่าวถึงเกิดขึ้นหลังจากการตั้งค่าmultiDexEnable=trueใน build.gradle

ในการแก้ไขข้อผิดพลาดอย่างสมบูรณ์ก่อนอื่นให้ดูที่Configure Apps with Over 64K Methods (espescially "Configuring Your App for Multidex with Gradle")

นอกจากนี้ค้นหาการเกิดขึ้นของคลาสที่ทำให้เกิดข้อผิดพลาด "รายการที่ซ้ำกัน" โดยใช้ ctrl + n ใน Android Studio กำหนดโมดูลและการอ้างอิงที่มีรายการที่ซ้ำกันและแยกออกจากโครงสร้างเช่น:

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

ฉันต้องลองใช้ป้ายชื่อโมดูลหลายตัวจนกว่าจะได้ การยกเว้น "support-v4" ช่วยแก้ปัญหาที่เกี่ยวข้องกับ "java.util.zip.ZipException: รายการที่ซ้ำกัน: 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'

ในกรณีข้างต้นไฟล์ aar ที่ฉันรวมไว้ในไดเร็กทอรี libs ของฉัน (theOffendingAAR) รวมไฟล์ jar ของ Google Play Services (ใช่ทั้งหมดใช่ฉันรู้) ในขณะที่ไฟล์ BaseApp ของฉันใช้บริการตำแหน่ง:

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

คุณสามารถลบรายการที่ละเมิดออกจากไฟล์บิลด์ล้างและสร้างใหม่ได้อย่างปลอดภัย (ทำซ้ำหากจำเป็น)


1
แล้วถ้าฉันต้องการห้องสมุดที่ละเมิดล่ะ?
Janusz

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 หากคุณมีการคอมไพล์เวอร์ชันอื่นจะทำให้เกิดข้อยกเว้นนั้น


ขอบคุณมากทำงานได้ดีฉันมีบริการ Google Play สามรายการที่รวบรวม 'com.google.android.gms: play-services-analytics: 8.4.0' compile 'com.google.android.gms: play-services-ads: 8.3 .0 'compile' com.google.android.gms: play-services-plus: 8.4.0 '
Samadhan Medge

5

ง่าย ๆ ลบไฟล์ Jar ของคุณจากการอ้างอิง gardle.project เป็น v7 และรันโปรเจ็กต์ของคุณ


นั่นใช้ได้ผลสำหรับฉันเพียงแค่ลบ "ไฟล์คอมไพล์ ('libs / android-support-v13.jar')" แบบฟอร์ม "การอ้างอิง" ใน "build.gradle (Module: app)" ของฉัน สำหรับการอ้างอิงคุณจะได้รับข้อผิดพลาดนี้หลังจากนำเข้าแบบฟอร์มโครงการ eclipse ไปยัง Android Studio
rafaellorey

5

สำหรับ Expose.class Error เช่น

java.util.zip.ZipException: รายการที่ซ้ำกัน: com / google / gson / annotations / Expose.class

ใช้รหัสด้านล่าง

configurations {
    all*.exclude  module: 'gson'
}

11
OP ไม่พูดอะไรเกี่ยวกับgson.
IgorGanapolsky

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

ในสถานการณ์ของฉัน lib 'espresso' มีขวดที่เรียกว่า support-v4 และในโครงการของฉัน 'app' มี support-v4 เหมือนกันไม่รวม support-v4 เมื่อนำเข้าเอสเพรสโซ

PS: ดูเหมือนว่าcompile projectจะไม่สามารถใช้งานได้กับไฟล์exclude


1

นี่เป็นเพราะคุณได้เพิ่มไลบรารีและได้รับการพึ่งพาโมดูลมากกว่าหนึ่งครั้ง

ในกรณีของฉันฉันได้เพิ่มไลบรารีเป็นโมดูลและเป็นการพึ่งพาทั้งสองอย่าง

การลบแหล่งที่มาหนึ่งของการเพิ่มไลบรารี (ฉันลบการพึ่งพาการไล่ระดับสี) ช่วยแก้ปัญหาของฉันได้


มิฉะนั้นปัญหานี้ได้รับการแก้ไขสำหรับฉันโดยการลบ jar ออกจาก libs dir และรักษาการพึ่งพา gradle
droideckar

Yeh! การลบแหล่งที่มาเดียวจะทำให้เกิดปัญหา การรักษาแบบพึ่งพาอาศัยกันเป็นสิ่งที่ดี
Rahul Rastogi

0

สำหรับข้อผิดพลาด: การดำเนินการล้มเหลวสำหรับงาน ': app: transformClassesWithJarMergingForDebug' com.android.build.api.transform.TransformException java.util.zip.ZipException รายการที่ซ้ำกัน com / google / gson / annotations / Expose.class

นี่คือสิ่งที่ฉันทำ:

1) ลบไฟล์ gson-2.5.jar 2) การกำหนดค่า {all * .exclude module: 'gson-2.5'}


คำถามไม่เกี่ยวกับ Gson
OneCricketeer

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
เวอร์ชัน UI ของ Firebase ขึ้นอยู่กับเวอร์ชันของ Firebase ที่คุณรวบรวม
OneCricketeer

0

ฉันมีปัญหาเช่นกันเนื่องจากฉันมีคอมไพล์ 'com.android.support:appcompat-v7:24.0.0-alpha1' แต่ฉันได้เพิ่มการรวบรวมแบบรีไซเคอร์วิวเสรีรารี 'com.android.support:recyclerview-v7:24.0.2' .. ฉันเปลี่ยนเวอร์ชันเหมือนกับ compat like (24.0.2 intead of 24.0.0)

ฉันได้คำตอบแล้ว.. อาจจะช่วยใครสักคนก็ได้


0

ในกรณีของฉันข้อผิดพลาด "รายการที่ซ้ำกัน" ที่กล่าวถึงเกิดขึ้นหลังจาก settingmultiDexEnable = true ใน build.gradle

และข้อผิดพลาดที่ฉันได้รับคือด้านล่าง:

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

สิ่งแรกที่ฉันค้นหาคลาสที่ทำให้เกิดข้อผิดพลาด "รายการที่ซ้ำกัน" โดยใช้ ctrl + n ใน Android Studio และค้นหา com / google / android / gms / internal / zzqx.class จากนั้นแสดง 2 รายการสำหรับคลาส gms ในเวอร์ชันเดียว 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

ในกรณีของฉันข้อผิดพลาดที่แน่นอนอยู่ด้านล่าง

'หุ่นยนต์: transformClassesWithJarMergingForDebug'

com.android.build.api.transform.TransformException: java.util.zip.ZipException: รายการที่ซ้ำกัน: com / google / android / gms / internal / zzqx.class

ฉันใช้ google apis เวอร์ชันอื่นเช่นในไฟล์ 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"

อย่างไรก็ตามในการค้นหาสิ่งนี้ฉันทำ ctrl + n ใน android studio และป้อนชื่อคลาส zzqx.class จากนั้นมันจะแสดงไฟล์ jar 2 ไฟล์ที่ถูกดึงมาสำหรับคลาสนี้จากนั้นฉันก็เข้าใจว่าบางแห่งฉันใช้เวอร์ชัน 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'

ไปยังโมดูลไลบรารี Android ของฉัน การลบบรรทัดช่วยแก้ปัญหาได้


0

ฉันลองวิธีแก้ปัญหาข้างต้นทั้งหมดแล้ว แต่ไม่ได้ผล ฉันลองอัปเดตไลบรารีตามโครงสร้างโครงการ goto> แอป และมันได้ผลสำหรับฉัน! หวังว่าคำตอบนี้จะเป็นประโยชน์กับใครบางคน


-1

ลองสิ่งนี้:

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

คำถามนี้เกี่ยวกับไลบรารี v4 ที่รองรับไม่ใช่ PhotoView
OneCricketeer

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.