从 @aar、gradle 依赖中排除包/类

Alo*_*tel 6 android gradle android-studio build.gradle android-gradle-plugin

我在build.gradle文件中添加了以下依赖项。

compile 'com.aerisweather:aeris-maps-lib:2.0.0@aar'
Run Code Online (Sandbox Code Playgroud)

它来自

https://oss.sonatype.org/content/repositories/comaerisweather-1027/com/aerisweather/aeris-maps-lib/2.0.0/

如果您从以下 URL 看到工件,它具有 android 支持 v7 库类。

https://oss.sonatype.org/#nexus-search;quick~aerisweather

我想在运行/打包应用程序时排除该包。由于重复的类错误,我无法运行/打包应用程序。

我尝试过添加这样的配置,

configurations {
    all*.exclude group: 'com.android.support', module: 'appcompat-v7'
}
Run Code Online (Sandbox Code Playgroud)

但这将它排除在整个项目之外,这导致我犯了很多错误。

我已经尝试了一切,但仍然出现以下错误。

错误:任务“:transformClassesWithJarMergingForDebug”执行失败。com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:android/support/v7/appcompat/R$anim.class

小智 3

该库还具有依赖项support-v4mediarouter-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'
    })
}
Run Code Online (Sandbox Code Playgroud)

附言。

aeris-maps-lib还有com.google.android.gms:play-services依赖项,它是整个 Play Services 包(它很大),您需要启用 MultiDex 或使用 proguard 收缩代码。