我在build.gradle
文件中添加了依赖关系。
compile 'com.aerisweather:aeris-maps-lib:2.0.0@aar'
来自
如果你看到来自以下URL的工件,它有android支持v7库类。
https://oss.sonatype.org/#nexus-search;quick~aerisweather
我想在运行/打包应用程序时排除该包。由于重复的类错误,我无法运行/打包应用程序。
我尝试过添加这样的配置,
configurations {
all*.exclude group: 'com.android.support', module: 'appcompat-v7'
}
但这将整个项目排除在外,导致我出现许多错误。
我已尝试过所有操作,但仍然遇到以下错误。
错误:任务':transformClassesWithJarMergingForDebug'执行失败。 com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:android / support / v7 / appcompat / R $ anim.class
答案 0 :(得分:1)
此库还具有依赖项support-v4
和mediarouter-v7
。
您需要将它们全部排除在aeris-maps-lib
之外,并将其作为您自己的依赖项。
def supportLibraryVersion = '25.0.1'
dependencies {
compile "com.android.support:support-v4:${supportLibraryVersion}"
compile "com.android.support:support-annotations:${supportLibraryVersion}"
compile "com.android.support:appcompat-v7:${supportLibraryVersion}"
//... other deps
compile ('com.aerisweather:aeris-maps-lib:2.0.0@aar', {
exclude group: 'com.android.support', module: 'support-v4'
exclude group: 'com.android.support', module: 'appcompat-v7'
exclude group: 'com.android.support', module: 'mediarouter-v7'
})
}
PS。
aeris-maps-lib
还有com.google.android.gms:play-services
依赖项,这是整个Play服务包(它很大),您需要启用MultiDex或使用proguard缩小代码。
答案 1 :(得分:0)
不是直接的回答,而是建议。
gradle 提供的排除功能(排除方法调用)不适用于本地 aar 文件中的内容,因为这些内容不是由依赖项管理定义的,因此不能被其识别。 就依赖解析而言,aar 文件是一个单独的单元(包括其中的所有资源/类)。所以文件需要以不包含这些条目的方式构建;或者,如果该文件不是您自己构建的,您可以解压缩并忽略有问题的文件并重新打包。
虽然可能有一些使用 gradle 删除某些文件的黑客方法(我还没有找到任何可靠的方法),但我们可以在其中加入一些中间构建步骤并删除这些文件;但通常建议的最佳做法是避免将公开可用的依赖项打包到 aar/jar 中,以避免重复输入问题并保持 aar/jar 的大小较小。