两个不同项目模块中的重复库

Duplicate libraries in two different project modules

我有两个模块的项目。 我正在使用 SalesforceSDK,它作为单独的模块包含在 SalesforceSDK 中,我有 Cordova 正在使用okhttp。 在第二个模块中,我也有使用 okhttp 的改造库,当我尝试构建项目时,我得到

duplicate dex files error

我试图从 SalesforceSDK 中删除 okhttp 依赖项并从我的第二个模块中包含它,但我得到

symbols not found error

唯一剩下要做的就是将 okhttp 作为不同的模块包含在内,但在我这样做之前,我想问你是否还有其他方法可以解决这个问题?

编辑:

我尝试了 Aayushi 提出的解决方案,但仍然出现错误:

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'.

java.util.zip.ZipException: duplicate entry: com/squareup/okhttp/Address.class

如果您正在使用 android studio 无需删除您可以使用两个库

只需使用

android {
    defaultConfig {
     ...
      multiDexEnabled = true
  }
}

也需要使用此语句

dependencies 
{
    compile 'com.android.support:multidex:1.0.0'
}

看看jarjar,它可以让你在一个地方使用一个版本的OkHttp,在其他地方使用另一个版本。

还有其他类似的工具(阴影),其中大部分都适合您。

对于这个问题,我还有另一个解决方案。 首先,我 运行 这个命令行:

这是结果:

我看到Paypal也使用okhttp library.So,我在gradlew中添加了这一行:

compile('com.paypal.sdk:paypal-android-sdk:2.13.3')
        {
            exclude group: 'com.squareup.okhttp3', module: 'okhttp'
        }

而且它对我来说也很好用。

我能够按照此解决问题 - https://developer.android.com/studio/build/dependencies#duplicate_classes

在我的例子中,cordova-android-3.3.0.jar 是 2 个不同项目的依赖项,其中一个是另一个项目的依赖项。