2017-06-23 50 views
4

我正在構建一個項目,它有兩個類(A和B),都從BaseClass繼承。這兩個類,A和B都有註解@Parceler。當我建立它的手機OS版本4.1.2(API 16),它給了我這個錯誤:Parceler ZipException「重複項」

Execution failed for task ':app:transformClassesWithJarMergingForDebug'. 
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: 
com/example/BaseClass$$PackageHelper.class 

如果我建立它與牛軋糖一個電話,不存在任何問題。

我已閱讀過關於使用parcelsIndex,但Parceler不支持我使用的版本 - 1.1.8。

是否有任何修復這個問題?

+0

如果可能,請添加有問題的代碼。 –

+0

@PravinDivraniya,我不確定什麼代碼會造成這個問題。看起來更像是有兩個Parcellable類從一個普通的Parcellable類繼承是問題。 – rajath

回答

1

此錯誤是由於您對同一個庫使用2個依賴項以及不同版本的依賴項造成的。

對於你的情況,我需要更多的數據,但我給這似乎可以解釋你的問題的例子:假設你的項目使用庫x和庫X使用依賴性: compile "com.android.support:appcompat-v7:25.3.0"

這是怎麼了您gradle這個樣子:

apply plugin: 'com.android.application' 

android { 
    ... 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 

    compile "com.company.library_x:+" 
    compile "com.android.support:appcompat-v7:23.4.0" 
} 

這裏的東西,因爲你使用了相同的依賴,library_x和你有依賴性的衝突,因爲你要導入的版本23.4.0和圖書館使用的版本25.3.0。當你建立一個項目時,所有的依賴關係都會被採取並被「下載」,在這種情況下,你已經下載了同一個庫的兩個版本,並且你有重複的項目。您沒有太多的選擇,但要使用相同版本library_x用途,這意味着您的情況下,使用最新版本構建您的項目。

Fyi,一些更多的信息:在build->intermediates->exploded-aar->appcompat-v7->25.3.0->...class_of_the_error.class你實際上可以看到造成問題的價值。

+0

如果是這樣的話,我會看到在https://stackoverflow.com/questions/42374151/all-com-android-support-libraries-must-use-the-exact-same-version-specification中給出的錯誤,但我不知道。另外,這個問題是由於我自己的類 - 不是庫的。這也只在Release版本中。無論如何,它看起來像是因爲在另一個模塊中引用了一個Parcellable類 - 我剛剛將這些類移到了同一個模塊中。儘管感謝您的幫助。 – rajath