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

在Android Studio Giraffe中导入OpenCV 4.8遇构建错误求助

解决OpenCV Android SDK导入AGP 8.x项目的构建错误

问题根源

你碰到的Plugin [id: 'com.android.application', version: '8.1.0', apply: false] was not found错误,本质是OpenCV 4.8.0自带的模块build.gradle使用了旧版Android Gradle插件(AGP)的语法,和你项目中AGP 8.1.0的新配置格式不兼容。旧版的apply plugin声明方式在AGP 7+之后的构建系统中会导致插件版本匹配失败。

一步到位修复方案

1. 替换OpenCV模块的build.gradle

找到你导入的OpenCV模块根目录下的build.gradle,直接替换为以下适配AGP 8.x的代码:

plugins {
    id 'com.android.library'
    id 'org.jetbrains.kotlin.android'
}

def openCVersionName = "4.8.0"
def openCVersionCode = ((4 * 100 + 8) * 100 + 0) * 10 + 0

println "OpenCV: " + openCVersionName + " " + project.buildscript.sourceFile

android {
    namespace 'org.opencv'
    compileSdk 33 // 可以和你的项目compileSdk保持一致,比如改成28

    defaultConfig {
        minSdk 21
        targetSdk 33 // 同样建议和项目目标SDK(28)对齐

        versionCode openCVersionCode
        versionName openCVersionName

        externalNativeBuild {
            cmake {
                arguments "-DANDROID_STL=c++_shared"
                targets "opencv_jni_shared"
            }
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    buildTypes {
        debug {
            packagingOptions {
                doNotStrip '**/*.so'
            }
        }
        release {
            packagingOptions {
                doNotStrip '**/*.so'
            }
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['native/libs']
            java.srcDirs = ['java/src']
            aidl.srcDirs = ['java/src']
            res.srcDirs = ['java/res']
            manifest.srcFile 'java/AndroidManifest.xml'
        }
    }

    externalNativeBuild {
        cmake {
            path file('libcxx_helper/CMakeLists.txt')
        }
    }
}

dependencies {
}

2. 同步并验证

  • 点击Android Studio右上角的「Sync Project with Gradle Files」按钮
  • 检查项目根目录settings.gradle,确保OpenCV模块已被正确包含:
    include ':app', ':opencv' // 此处的opencv是你导入模块时的命名
    

3. 可选优化:调整SDK版本

如果你的项目目标SDK是28,把上面代码中的compileSdk和targetSdk改成28,消除版本不一致的警告。

更稳妥的导入方式(推荐)

其实最新教程的导入方式有误,OpenCV官方推荐只导入sdk/java目录作为模块,而非整个sdk目录:

  1. 导入sdk/java作为模块
  2. 将OpenCV解压后的sdk/native/libs目录复制到你项目的app/src/main/jniLibs下
  3. 或者在app模块的build.gradle中配置native库路径:
    sourceSets {
        main {
            jniLibs.srcDirs += ['../opencv/native/libs'] // 路径根据实际情况调整
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:08:28