两个不同项目模块中的重复库
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 个不同项目的依赖项,其中一个是另一个项目的依赖项。
我有两个模块的项目。
我正在使用 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 个不同项目的依赖项,其中一个是另一个项目的依赖项。