集成OpenCV后Flutter构建Prod环境APK失败问题求助
Flutter构建prod flavor APK时遭遇OpenCV BuildConfig重复定义错误
我在Flutter项目中集成了Android版OpenCV SDK,调试模式下运行完全正常,但执行flutter build apk --flavor prod构建正式环境APK时,触发了R8编译错误,提示org.opencv.BuildConfig被多次定义,错误日志如下:
ERROR:C:\Users\Wesley\.gradle\caches\transforms-3\a70cc01f707cb65bbfec9756913c8264\transformed\jetified-opencv_android_module-3.1.0-fix3-runtime.jar: R8: Type org.opencv.BuildConfig is defined multiple times: C:\Users\Wesley\.gradle\caches\transforms-3\a70cc01f707cb65bbfec9756913c8264\transformed\jetified-opencv_android_module-3.1.0-fix3-runtime.jar:org/opencv/BuildConfig.class, C:\Mobile App\Mobile-App\mobile-app\build\sdk\intermediates\runtime_library_classes_jar\prodRelease\classes.jar:org/opencv/BuildConfig.class FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:minifyProdReleaseWithR8'. > A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable > Compilation failed to complete, origin: C:\Users\Wesley\.gradle\caches\transforms-3\a70cc01f707cb65bbfec9756913c8264\transformed\jetified-opencv_android_module-3.1.0-fix3-runtime.jar:org/opencv/BuildConfig.class * 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 13s Running Gradle task 'assembleProdRelease'... 74.7s Gradle task assembleProdRelease failed with exit code 1
已尝试的解决方案
- 执行Android Studio的Invalidate Caches/Restart操作
- 删除项目根目录及用户目录下的
.gradle缓存文件夹 - 删除项目的
build文件夹 - 组合上述操作后重新同步Gradle、清理项目并重新构建
- 将主项目的flavor配置复制到OpenCV模块的
build.gradle文件中
以上操作均未解决问题,调试模式下OpenCV的使用完全正常,仅构建prod flavor的release包时会触发错误。
相关配置代码
app/build.gradle 依赖配置
dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation platform('com.google.firebase:firebase-bom:29.0.4') implementation 'com.google.firebase:firebase-analytics-ktx' implementation 'com.google.firebase:firebase-crashlytics-ktx' implementation project(path: ':openCV:sdk') }
app/build.gradle BuildTypes与Flavors配置
buildTypes { release { minifyEnabled true shrinkResources true debuggable false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } debug { shrinkResources false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } flavorDimensions "appMode" productFlavors { qa { dimension "appMode" //applicationIdSuffix ".debug" manifestPlaceholders = [appName: "@string/app_name_qa"] } prod { dimension "appMode" manifestPlaceholders = [appName: "@string/app_name"] } }
我尝试了所有能想到的常规解决方案都无效,希望能得到针对性的解决建议。
内容的提问来源于stack exchange,提问作者Wesley DaBes
相关产品推荐
相关产品推荐

