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

Flutter构建release APK时OpenCV重复类、JAR版本冲突报错

Flutter 引入opencv依赖构建release包失败修复方案

问题表现

  • 项目中添加opencv: ^1.0.4依赖后,执行flutter build apk命令构建release安装包,构建流程开启sound null safety时首先抛出Kotlin运行时JAR版本不一致警告:
w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
    C:/Users/Administrator/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.5.30/5fd47535cc85f9e24996f939c2de6583991481b0/kotlin-stdlib-jdk8-1.5.30.jar (version 1.5)
w: Some runtime JAR files in the classpath have an incompatible version. Consider removing them from the classpath
  • 警告抛出后构建中断,核心报错为重复类冲突,大量org.opencv包路径下的类同时存在于两个OpenCV依赖中:
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkReleaseDuplicateClasses'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
   > Duplicate class org.opencv.BuildConfig found in modules jetified-opencv-4.3.0-runtime (com.quickbirdstudios:opencv:4.3.0) and jetified-opencv-android-gradle-repo-3.3.0-runtime (com.github.davidmigloz:opencv-android-gradle-repo:3.3.0)
     Duplicate class org.opencv.android.AsyncServiceHelper found in modules jetified-opencv-4.3.0-runtime (com.quickbirdstudios:opencv:4.3.0) and jetified-opencv-android-gradle-repo-3.3.0-runtime (com.github.davidmigloz:opencv-android-gradle-repo:3.3.0)
     Duplicate class org.opencv.android.BaseLoaderCallback$7 found in modules jetified-opencv-4.3.0-runtime (com.quickbirdstudios:opencv:4.3.0) and jetified-opencv-android-gradle-repo-3.3.0-runtime (com.github.davidmigloz:opencv-android-gradle-repo:3.3.0)
     Duplicate class org.opencv.android.Camera2Renderer found in modules jetified-opencv-4.3.0-runtime (com.quickbirdstudios:opencv:4.3.0) and jetified-opencv-android-gradle-repo-3.3.0-runtime (com.github.davidmigloz:opencv-android-gradle-repo:3.3.0)

     ....

     Duplicate class org.opencv.videoio.Videoio found in modules jetified-opencv-4.3.0-runtime (com.quickbirdstudios:opencv:4.3.0) and jetified-opencv-android-gradle-repo-3.3.0-runtime (com.github.davidmigloz:opencv-android-gradle-repo:3.3.0)

最终assembleRelease任务执行失败,进程退出码为1。

错误根因

构建阶段同时拉取了两个来源、版本均不相同的OpenCV Android依赖,两者类路径完全一致,触发Gradle重复类校验规则:

  • com.quickbirdstudios:opencv:4.3.0:是引入的opencv: ^1.0.4Flutter插件默认绑定的原生OpenCV依赖
  • com.github.davidmigloz:opencv-android-gradle-repo:3.3.0:是项目中其他第三方依赖通过传递依赖引入的旧版OpenCV库
    此外不同依赖携带的Kotlin标准库版本和项目当前配置的Kotlin版本不匹配,因此抛出JAR版本不一致警告。

修复步骤

  1. 排除冲突的旧版OpenCV传递依赖
    打开项目Android目录下的app/build.gradle文件,定位到dependencies代码块。如果无法确认是哪个依赖引入了旧版OpenCV,先进入Android目录执行./gradlew app:dependencies命令打印全量依赖树,搜索opencv-android-gradle-repo关键字定位对应的上层依赖,针对该依赖添加排除规则。
    如果确认是opencv Flutter插件本身传递引入了冲突依赖,直接添加如下配置:
dependencies {
    // 项目原有其他依赖保持不变
    implementation('com.quickbirdstudios:flutter_opencv:1.0.4') {
        exclude group: 'com.github.davidmigloz', module: 'opencv-android-gradle-repo'
    }
}
  1. 统一Kotlin标准库版本消除警告
    打开项目根目录下的build.gradle文件,在allprojects代码块中添加版本强制对齐规则,确保所有依赖使用的Kotlin标准库版本和项目声明的Kotlin插件版本一致:
allprojects {
    repositories {
        // 原有仓库配置保持不变
    }
    configurations.all {
        resolutionStrategy {
            force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
            force "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
        }
    }
}

配置中的$kotlin_version替换为项目buildscript块中声明的kotlin-gradle-plugin对应版本号即可。

  1. 清理缓存重新构建
    依次执行以下命令清理历史构建缓存,重新拉取依赖后打包:
flutter clean
flutter pub get
flutter build apk --release

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:15:41