2017-06-23 21 views
4

私は、両方ともBaseClassから継承する2つのクラス(AとB)を持つプロジェクトを構築しています。両方のクラスAとBには@Parcelerアノテーションがあります。私は4.1.2(API 16)版OSとの電話のためにそれを構築する場合、それは私に、このエラーを与える:パーセル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クラスから継承している2つのParcellableクラスが問題に似ているようです。 – rajath

答えて

0

私はさまざまなモジュールのクラスを使用していましたが、これが原因でした。 @ParcelClass注釈(https://github.com/johncarl81/parceler/issues/225?)を使用して解決策があるかもしれませんが、私は単純にそれらを同じモジュールに移動しました。

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を使用しているので、あなたは、依存関係で衝突を持っています。プロジェクトをビルドすると、すべての依存関係が取得され、「ダウンロード」されます。この場合、同じライブラリの2つのバージョンをダウンロードし、重複するエントリがあります。あなたにはたくさんのオプションがありませんが、同じバージョンの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に記載されているエラーが発生しているはずです。しかし、私はしません。また、この問題は私自身のクラスのために発生します - ライブラリではありません。それはリリースビルドだけでもそうです。とにかく、別のモジュールのParcellableクラスを参照しているようです - 私はクラスを同じモジュールに移動しました。あなたの助けをありがとう。 – rajath

関連する問題