You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java/Android中如何排除本地AAR包的传递依赖?

本地AAR包类重复冲突解决方案

错误原因

之前的写法报错是因为直接以AAR文件名作为依赖时,Gradle不支持直接附加闭包配置exclude规则,只有group:name:version格式的坐标依赖才支持该写法。

方案1:标准本地AAR依赖排除规则(优先尝试)

首先确认Module级build.gradle中已经配置了libs目录为本地依赖仓库:

repositories {
    flatDir {
        dirs 'libs'
    }
}

再修改依赖声明格式,附加排除规则:

dependencies {
    implementation (name:'3ds-sdk-2.3.4.0-production-release', ext:'aar') {
        exclude group:'com.squareup.okhttp3', module:'okhttp'
        exclude group:'com.squareup.okio', module:'okio'
    }
    // 保留其余原有依赖
}

方案2:全局强制统一依赖版本

如果方案1不生效,可通过全局分辨率策略强制统一okhttp、okio的版本,对所有来源的依赖都生效:

// 写在Module级build.gradle的android节点外层
configurations.all {
    resolutionStrategy {
        // 版本号替换为你项目当前使用的版本即可
        force 'com.squareup.okhttp3:okhttp:3.12.1'
        force 'com.squareup.okio:okio:1.15.0'
    }
}

方案3:打包时优先指定重复类来源(兜底方案)

如果冲突的类是AAR直接打包进内部的(非传递依赖,无法通过exclude排除),可通过packagingOptions指定重复类的选择策略:

android {
    // 保留其余原有配置
    packagingOptions {
        // 优先选用项目依赖的okhttp、okio包中的类
        pickFirst 'okhttp3/**'
        pickFirst 'okio/**'
    }
}

内容的提问来源于stack exchange,提问作者Raphael Pinel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:15:04