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

Gradle集成IDnow与TrueLayer库报Duplicate class构建失败如何解决

Gradle构建IDnow+TrueLayer依赖重复类问题修复

问题现象

同时在项目中引入IDnow、TrueLayer两个SDK进行开发时,Gradle构建因duplicate class错误失败。
排查确认:

  • 冲突根源是IDnow SDK打包时未对BouncyCastle加密库做依赖重定位处理,相关类直接被打进SDK产物、同时还保留了对应库的传递依赖声明
  • 若直接从TrueLayer依赖中排除对应BouncyCastle冲突类,应用会在运行时抛出异常崩溃
  • 构建时抛出的首个错误信息如下:
> Duplicate class org.bouncycastle.LICENSE found in modules jetified-bcprov-jdk15to18-1.69 (org.bouncycastle:bcprov-jdk15to18:1.69) and jetified-idnow-android-sdk-5.1.11-runtime (de.idnow.sdk:idnow-android-sdk:5.1.11)

修复步骤

  • 禁止从TrueLayer侧排除BouncyCastle依赖。该操作会导致TrueLayer运行时加载不到匹配版本的加密类,直接触发崩溃。
  • 修改IDnow SDK的引入配置,排除它声明的冗余BouncyCastle传递依赖,示例配置(写在模块级build.gradle的dependencies节点下):
dependencies {
    // 原有其他依赖保持不变

    // 引入IDnow时排除冗余的BouncyCastle传递依赖
    implementation("de.idnow.sdk:idnow-android-sdk:5.1.11") {
        exclude group: "org.bouncycastle"
    }

    // TrueLayer依赖保持原有引入方式即可,无需修改
}
  • 如果完成上述配置后,仍报BouncyCastle路径下的重复类/资源错误,在android节点下添加全局版本强制规则与打包排除规则,示例配置:
android {
    // 原有编译配置、defaultConfig等配置保持不变

    packagingOptions {
        // 排除重复的LICENSE校验文件
        exclude "org/bouncycastle/LICENSE"
        pickFirst "META-INF/versions/9/OSGI-INF/MANIFEST.MF"
    }

    configurations.all {
        resolutionStrategy {
            // 强制全局BouncyCastle依赖版本为1.69,和IDnow内置版本保持一致
            force "org.bouncycastle:bcprov-jdk15to18:1.69"
            force "org.bouncycastle:bcpkix-jdk15to18:1.69"
        }
    }
}
  • 验证操作:
    • 执行./gradlew clean清理旧构建缓存
    • 执行正常构建命令确认不再报重复类错误
    • 安装包后分别触发IDnow、TrueLayer的相关业务流程,确认无运行时类缺失、方法签名不匹配异常

内容的提问来源于stack exchange,提问作者Amir M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:06:26