添加flutterpluginfidologinapi后出现CheckDuplicateClasses构建失败求助
解决Flutter依赖重复类冲突问题
当前使用的依赖库
idenfy_sdk_flutter: 2.0.0 flutterpluginfidologinapi: hosted: name: flutterpluginfidologinapi url: https://flutter.dev.loginid.io version: 0.61.33
构建错误详情
添加flutterpluginfidologinapi后,出现以下重复类冲突错误:
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:checkDevDebugDuplicateClasses'. > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable > Duplicate class a.a found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class b.a found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class c.a found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class d.a found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class d.b found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class d.b$a found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class d.b$b found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class e.a found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class f.a found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class f.b found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class g.a found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Duplicate class h.a found in modules jetified-android-sdk-0.92.36-runtime (login.api.native:android-sdk:0.92.36) and jetified-sdk-api-7.7.0-runtime (com.github.idenfy:sdk-api:7.7.0) Go to the documentation to learn how to Fix dependency resolution errors. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 1m 49s Exception: Gradle task assembleDevDebug failed with exit code 1
当前gradle.properties配置
org.gradle.jvmargs=-Xmx1536M android.enableR8=true android.useAndroidX=true android.enableJetifier=true
已尝试的无效方案
之前尝试过全局排除模块,但未解决问题:
configurations { all*.exclude module: 'com.github.idenfy' }
有效解决方案
1. 精准排除冲突依赖
全局排除范围太广,需针对具体冲突的依赖模块,在pubspec.yaml中给对应的Flutter依赖添加排除规则:
如果是flutterpluginfidologinapi引入的login.api.native:android-sdk和idenfy_sdk_flutter的com.github.idenfy:sdk-api冲突,可选择排除其中一个:
排除flutterpluginfidologinapi中的冲突模块
flutterpluginfidologinapi: hosted: name: flutterpluginfidologinapi url: https://flutter.dev.loginid.io version: 0.61.33 exclude: group: 'login.api.native' module: 'android-sdk'
或者排除idenfy_sdk_flutter中的冲突模块
idenfy_sdk_flutter: version: 2.0.0 exclude: group: 'com.github.idenfy' module: 'sdk-api'
2. 强制统一依赖版本
在项目的android/build.gradle的allprojects块中,添加版本强制规则,让Gradle统一使用指定版本的依赖:
allprojects { repositories { // 保留原有仓库配置 } configurations.all { resolutionStrategy { // 二选一,选择兼容的版本强制使用 force 'com.github.idenfy:sdk-api:7.7.0' // force 'login.api.native:android-sdk:0.92.36' } } }
3. 临时禁用重复类检查(不推荐)
如果以上方法均无效,可临时禁用重复类检查任务作为应急方案,但此方法会隐藏潜在问题,可能引发运行时异常:
android { // 保留原有配置 tasks.whenTaskAdded { task -> if (task.name.startsWith('check') && task.name.contains('DuplicateClasses')) { task.enabled = false } } }
内容的提问来源于stack exchange,提问作者CoinBeam
相关产品推荐
相关产品推荐

