Android OpenCVモジュールインポート時の不具合対処

2023.7.20 Coskx Lab  

1 はじめに

Android Studio FlamingoでOpenCV(opencv.orgで配布)モジュールをインポートし,アプリを作ろうとしたとき,いくつかのトラブルに出会います。最近のエラー症状とその対処をまとめます。

症状1 kotlinのエラー

kotlinが見つからないというエラーメッセージが出ます。

A problem occurred evaluating project ':xxxxxxx'.
< Plugin with id 'kotlin-android' not found.

対処
Gradle Script/build.gradle(Module OpenCV)
の最初のところ,

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

でkotlinの行をコメントアウトし,次のように変更します。
修正の様子:

apply plugin: 'com.android.library'
//apply plugin: 'kotlin-android'

症状2 namespaceのエラー

Namespaceが書いてないというメッセージが出ます。

Namespace not specified. Please specify a namespace in the module's build.gradle file like so:

android {
    namespace 'com.example.namespace'
}

If the package attribute is specified in the source AndroidManifest.xml, it can be migrated automatically to the namespace value in the build.gradle file using the AGP Upgrade Assistant; please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

対処
Gradle Script/build.gradle(Module OpenCV)
android {}

の中に

namespace 'org.opencv'

を追加します。
修正の様子:

android {
    namespace 'org.opencv'
    compileSdkVersion xx

    defaultConfig {
        :

症状3 aidlのエラー

engine.OpenCVEngineInterfaceが見つからないというエラーメッセージが出ます。

import org.opencv.engine.OpenCVEngineInterface;

対処
OpenCV/java/org.opencv/engin/OpenCVEngineInterface.aidiが読み込めないためのエラーです。
読み込むように指示します。
Gradle Script/build.gradle(Module OpenCV)
android {}
の中に

    buildFeatures {
        aidl true
    }

を追加します。
修正の様子:

android {
    namespace 'org.opencv'
    compileSdkVersion xx
        :
    途中はいろいろ書いてある
        :
    externalNativeBuild {
        cmake {
            path (project.projectDir.toString() + '/libcxx_helper/CMakeLists.txt')
        }
    }
    buildFeatures {
        aidl true
    }
}

実はandroid{}の中であればどこに書いてあってもOKです。

症状4 buildconfigのエラー

BuildConfigが見つからないというエラーメッセージが出ます。

import org.opencv.BuildConfig;
                  ^
  シンボル:   クラス BuildConfig
  場所: パッケージ org.opencv

対処
Gradle Script/build.gradle(Module app)
android {}

の中に

buildFeatures.buildConfig true

を追加します。