android studio导入OpenCv并改造成.kts版本

1.下载opencv Android版本

2.解压导入android studio,我这里是先导入低版本的,还是gradle,直接导入module,我这里是4.2.0的版本

我的as版本是Android Studio Electric Eel 2022.1.1 Patch 2,我导入直接就能用

复制代码
 //load OpenCV engine and init OpenCV library
//这里放在oncreate里面用作初始化
        if (!OpenCVLoader.initDebug()){
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_2_0,this,mLoaderCallback);
        }else{
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
        }


  //OpenCV库加载并初始化成功后的回调函数
    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {

        @Override
        public void onManagerConnected(int status) {
            // TODO Auto-generated method stub
            switch (status){
                case BaseLoaderCallback.SUCCESS:
                    Log.e(TAG, "openCv=================成功加载");
                    break;
                default:
                    super.onManagerConnected(status);
                    Log.e(TAG, "openCv=================加载失败");
                    break;
            }
        }
    };

3.改造成build.gradle.kts版本使用

1.把代码从低版本android studio直接复制到高版本的android studio里面,这里我改了个名字,为了比较直观,我直接复制了两份用来做对比

2.直接对比改造

原版本

复制代码
apply plugin: 'com.android.library'

println "OpenCV: " + project.buildscript.sourceFile

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

    defaultConfig {
        minSdkVersion 25
        targetSdkVersion 32

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

    buildTypes {
        debug {
            packagingOptions {
               // doNotStrip '**/*.so'  // controlled by OpenCV CMake scripts
            }
        }
        release {
            packagingOptions {
               // doNotStrip '**/*.so'  // controlled by OpenCV CMake scripts
            }
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    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 (project.projectDir.toString() + '/libcxx_helper/CMakeLists.txt')
        }
    }

}

dependencies {
}

改造以后的版本

复制代码
plugins {
    id("com.android.library")
}

println("OpenCV: " + project.buildscript.sourceFile)


android {
    compileSdk = 32

    defaultConfig {
        namespace = "org.opencv"
        minSdk = 25

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles("consumer-rules.pro")

        externalNativeBuild {
            cmake {
                arguments.add("-DANDROID_STL=c++_shared")
                targets.add("opencv_jni_shared")
            }
        }
    }


    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }


    sourceSets {
        getByName("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("${project.projectDir}/libcxx_helper/CMakeLists.txt")
        }
    }
    buildFeatures{
        aidl =  true
    }

}

dependencies {

}

因为新kts的一些特性,我们新增了

复制代码
(1).namespace = "org.opencv"
(2).buildFeatures{
    aidl =  true
}

3.然后就可以直接使用了

相关推荐
帅得不敢出门1 小时前
Android监听第三方播放获取音乐信息及包名
android·java
2503_928411561 小时前
10.9 鸿蒙创建和运行项目
android·华为·harmonyos
alexhilton11 小时前
Kotlin互斥锁(Mutex):协程的线程安全守护神
android·kotlin·android jetpack
spencer_tseng12 小时前
Eclipse 4.7 ADT (Android Development Tools For Eclipse)
android·java·eclipse
小蕾Java12 小时前
PyCharm 2025:使用图文教程!
ide·python·pycharm
刘登辉14 小时前
idea使用联网缓存的pom进行离线开发
java·ide·intellij-idea·离线开发
小池先生14 小时前
用vscode查日志方便的搜索-复制所有匹配行功能
ide·vscode·编辑器
archko14 小时前
android pdf框架-15,mupdf工具与其它
android·pdf
.豆鲨包16 小时前
【Android】MVP架构模式
android·架构
代码会说话17 小时前
i2c通讯
android·linux·嵌入式硬件·嵌入式