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

时间:2015-10-05 09:18:27

标签: android cordova salesforce retrofit okhttp

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

  

重复dex文件错误

我尝试从 SalesforceSDK 中删除okhttp依赖项,并将其包含在我的第二个模块中,但我还是

  

未找到符号错误

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

编辑:

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

  

错误:任务执行失败   ':应用程序:packageAllDebugClassesForMultiDex'

     
    

java.util.zip.ZipException:重复条目:com / squareup / okhttp / Address.class

  

4 个答案:

答案 0 :(得分:1)

我还有另一个解决此问题的方法。 首先,我运行此命令行: enter image description here

这就是结果:

enter image description here

我看到Paypal也使用了okhttp库。所以,我把这行添加到了gradlew:

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

它对我来说很好。

答案 1 :(得分:0)

如果您使用的是android studio,则无需删除即可使用这两个库

只需使用

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

还需要使用此声明

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

通过执行以下操作,我可以解决此问题-https://developer.android.com/studio/build/dependencies#duplicate_classes

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