1

在ProGuard階段,我的Android gradle build失敗,MultiDex $ V14.class(見下文)出現重複類錯誤。我明白什麼是重複的類,我知道什麼是MultiDex,但我仍不明白它是如何重複的。

問題:

  1. 我看到一個定義是multidex.jar,當然。我怎麼知道其他的定義在哪裏?
  2. 是不是ProGuard應該刪除重複的條目,而不是抱怨它們?
  3. 底部的「出了什麼問題」的描述似乎與重複的類無關。是嗎?

-

(http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass) 
Warning: can't write resource [.gitkeep] (Duplicate zip entry [DMMPlaybackBitrateSwitching-1.0.jar:.gitkeep]) 
... 
Warning: can't write resource [.gitkeep] (Duplicate zip entry [DMMDigitalMusicLocatorServiceClient-1.0.jar:.gitkeep]) 
Exception while processing task 
java.io.IOException: Can't write [/Users/fruitman/dev/MusicAndroid-one/build/DigitalMusicAndroidAppOne/DigitalMusicAndroidAppOne-11.0/RHEL5_64/DEV.STD.PTHREAD/build/private/android-gradle/intermediates/classes-proguard/fourfireOS/debug/classes.jar] (Can't read [/Users/fruitman/dev/MusicAndroid-one/build/DigitalMusicAndroidAppOne/DigitalMusicAndroidAppOne-11.0/RHEL5_64/DEV.STD.PTHREAD/build/private/tmp/artifacts/multidex.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [multidex.jar:android/support/multidex/MultiDex$V14.class])) 
    at proguard.OutputWriter.writeOutput(OutputWriter.java:187) 
    at proguard.OutputWriter.execute(OutputWriter.java:79) 
    at proguard.ProGuard.writeOutput(ProGuard.java:427) 
    at proguard.ProGuard.execute(ProGuard.java:175) 
    at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074) 
    at com.android.build.gradle.tasks.AndroidProGuardTask.doMinification(AndroidProGuardTask.java:139) 
    at com.android.build.gradle.tasks.AndroidProGuardTask$1.run(AndroidProGuardTask.java:115) 
    at com.android.builder.tasks.Job.runTask(Job.java:48) 
    at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41) 
    at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:227) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.io.IOException: Cannot read [/Users/fruitman/dev/MusicAndroid-one/build/DigitalMusicAndroidAppOne/DigitalMusicAndroidAppOne-11.0/RHEL5_64/DEV.STD.PTHREAD/build/private/tmp/artifacts/multidex.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [multidex.jar:android/support/multidex/MultiDex$V14.class]) 
    at proguard.InputReader.readInput(InputReader.java:188) 
    at proguard.InputReader.readInput(InputReader.java:158) 
    at proguard.OutputWriter.writeOutput(OutputWriter.java:176) 
    ... 10 more 
Caused by: java.io.IOException: Duplicate zip entry [multidex.jar:android/support/multidex/MultiDex$V14.class] 
    at proguard.io.JarWriter.getOutputStream(JarWriter.java:138) 
    at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.java:105) 
    at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.java:105) 
    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) 
    ... 12 more 
:DigitalMusicAndroidAppOne:shrinkFourFireOSDebugMultiDexComponents FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':DigitalMusicAndroidAppOne:shrinkFourFireOSDebugMultiDexComponents'. 
> java.io.IOException: Can't read [/Users/fruitman/dev/MusicAndroid-one/build/DigitalMusicAndroidAppOne/DigitalMusicAndroidAppOne-11.0/RHEL5_64/DEV.STD.PTHREAD/build/private/android-gradle/intermediates/classes-proguard/fourfireOS/debug/classes.jar] (Can't process class [com/company/communication/ir/ParcelableIRServiceEndpoint.class] (Unexpected end of ZLIB input stream)) 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

BUILD FAILED 

Total time: 47.07 secs 

         BUILD FAILED  
+0

「出了什麼問題」引用'ParcelableIRServiceEndpoint',這取決於你在那裏做什麼 –

+0

@ cricket_007是的,但是這與複製的MultiDex類有什麼關係?我看了一下ParcelableIRServiceEndpoint。這是一個非常簡單的類,位於導入的jar中,不包含或定義與MultiDex相關的任何內容。 –

+0

不確定。我只是認爲「ZLIB輸入流的意外結束」可能意味着該類中的某些東西 –

回答

-1

兩天後,我發現這個問題,在lib..multidex 1.0.1,但依賴是1.0.0,所以才殺的lib,這是現在的工作