我有两个模块的项目。
我使用的是 SalesforceSDK ,它作为单独的模块包含在 SalesforceSDK 中,我的 Cordova 正在使用okhttp
。
在第二个模块中,我有使用okhttp
的改造库,当我尝试构建项目时,我得到了
重复dex文件错误
我尝试从 SalesforceSDK 中删除okhttp
依赖项,并将其包含在我的第二个模块中,但我还是
未找到符号错误
唯一要做的就是将okhttp
作为不同的模块加入,但在我这样做之前,我想问你是否有其他方法可以解决这个问题?
我尝试了Aayushi提出的解决方案,但我仍然遇到错误:
错误:任务执行失败 ':应用程序:packageAllDebugClassesForMultiDex'
java.util.zip.ZipException:重复条目:com / squareup / okhttp / Address.class
答案 0 :(得分:1)
这就是结果:
我看到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个不同项目的依赖项,其中一个是另一个项目的依赖项。