首页 > 解决方案 > Android Studio 和 OpenCV “编译错误”、“无法解析可样式化的符号”

问题描述

我正在使用 android studio 3.3 版和 openCV 4.0.1 版

在 android studio 中设置 openCV 后,当我运行应用程序检查 openCV 是否加载成功时,出现“编译失败”错误。我检查了这个问题,我看到了一个错误'无法解析符号'styleable'。

我已经尝试过清理和重建项目。我还更新了 gradle 脚本的 sdk 版本。

这是我的应用程序 gradle 脚本:


android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.homesafe.test"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets { main { jni.srcDirs = ['src/main/jni', 'src/main/jniLibs/'] } }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation project(':openCVLibrary401')
}

这是我的 openCV gradle 脚本:


android {
    compileSdkVersion 28
    //buildToolsVersion "x.y.z" // not needed since com.android.tools.build:gradle:3.0.0

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 28
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['../../jni']
            java.srcDirs = ['src']  // TODO Use original files instead of copied into build directory
            aidl.srcDirs = ['src']
            res.srcDirs = ['/build/master_pack-android/opencv/modules/java/android_sdk/android_gradle_lib/res']
            manifest.srcFile 'AndroidManifest.xml'
        }
    }
}

dependencies {
}

在此处输入图像描述

我不知道这里有什么问题。有什么帮助吗?太感谢了!

标签: androidandroid-studioopencv

解决方案


您需要替换以下行:

res.srcDirs = ['/build/master_pack-android/opencv/modules/java/android_sdk/android_gradle_lib/res']

有了这个:

res.srcDirs = ['res']

推荐阅读