我的项目的 lib 文件夹中有一个 aar 形式的 SDK。我正在尝试将它添加为项目的 build.gradle 中的依赖项。
dependencies {
...
compile(name:'mySDK', ex:'aar')
...
}
但是,当我尝试重建 gradle 时,我得到以下信息:
Error:(48, 0) No such property: ex for class: org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency_Decorated.
> java.util.zip.ZipException: duplicate entry: org/apache/http/impl/cookie/IgnoreSpecFactory.class
我解压了 mySDK
并确认 httpclient-android-4.3.5.1.jar
是 mySDK
中使用的一个库(这个 jar 包含 org.apache.http
...).
然后我更新了我的 gradle 以尝试排除这个库。
dependencies {
...
compile(name:'mySDK', ex:'aar'){
exclude(group: 'org.apache.http', module: 'httpclient-android-4.3.5.1')
}
...
}
我也试过排除:
exclude module: 'httpclient'
exclude(group: 'org.apache.http', module: 'httpclient-android')
exclude(group: 'org.apache.http', module: 'httpclient')
不幸的是,我仍然收到相同的 java.util.zip.ZipException
。知道如何解决这个问题吗?
最佳答案
您不能使用aar 文件
和平面存储库
。
您只能在使用 maven 依赖项的情况下执行此操作。在这种情况下,您有一个 pom 文件,它描述了依赖关系(带有模块和组)。
例如,在 aar 中没有任何 pom 文件描述 jar 文件是一个名为 httpclient-android-4.3.5.1
的依赖项。
通常 aar 文件不包含依赖项。
最好的选择是将此 aar 放在 maven 存储库中以排除依赖项。
由于不可能,另一种方法是解压缩 aar 文件,删除 jar 依赖项并重新打包 aar(它是一个简单的 zip 文件)。
关于android - 如何防止依赖编译重复依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35016036/