17

Maven リポジトリを介して Zendesk モバイル SDK をプロジェクトに統合しましたが、ビルドされなくなりました。私が使用している picasso ライブラリと何らかの衝突があります。ビルド中に次のエラーが発生します。

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: com/squareup/picasso/Action$RequestWeakReference.class 

app フォルダーで実行../gradlew dependenciesしたところ、zendesk モジュールの下に次のようなものが見つかりました。

\--- com.zendesk:sdk:1.0.0.1
     +--- com.squareup.retrofit:retrofit:1.4.1
     |    \--- com.google.code.gson:gson:2.2.4
     +--- com.squareup.picasso:picasso:2.3.2
     +--- com.android.support:support-v4:20.0.+ -> 21.0.3 (*)
     \--- com.android.support:appcompat-v7:20.0.+ -> 21.0.3 (*)

そのため、zendeskもピカソを使用していますが、私のプロジェクトにあるものとは異なるバージョンです。次のように、ピカソをzendeskから除外してみました:

compile (group: 'com.zendesk', name: 'sdk', version: '1.0.0.1'){
            exclude group: 'com.squareup.picasso'
        }

ただし、これにより、アプリの他のコンポーネントで実行時例外が発生します。ライブラリとはまったく関係のないクラスで NoDefFoundError が発生します。
この問題を回避する方法を知っている人はいますか?

4

1 に答える 1

27

依存関係を追加したとき、com.android.support:multidex実際には他の依存関係と衝突するいくつかの依存関係を追加しました。 --------------- 1.クラスを検索

し ます。あなたの場合は「RequestWeakReference.class」です(AndroidStudioでは、WindowsまたはCMD-OでCtrl + Nを押すだけですMac の場合) 2. どの jar に含まれているかを確認します - Android Studio はそれをポップアップに書き込みます。 3. すべてのビルドから除外します。次に例を示します。





android {
     configurations{
        all*.exclude module: 'servlet-api'
    }
}
于 2015-03-09T08:34:00.927 に答える