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.然后就可以直接使用了

相关推荐
天空之城--25 分钟前
近一周Android开发动态:AI编码、Compose与自适应实践
android
mmsx39 分钟前
Android 混淆挡不住二次打包:一条完整的攻击链与突破口
android·混淆
jason.zeng@15022071 小时前
路由 + 登录页面 + Token 持久化
android studio
聚美智数10 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
devilnumber12 小时前
避坑_IDEA 提取方法(Extract Method)工具
java·ide·intellij-idea
mmsx15 小时前
Android 插件化架构:40 个 Gradle 模块的拆分、通信与共存
android·kotlin
mmsx15 小时前
Android 不改一行源码:用 AspectJ 做三类拦截
android·kotlin
TST-魚爷15 小时前
易视讯会议摄像头 + 全向麦克风实操讲解稿
android·电脑·钉钉·腾讯会议·zoom会议
嘟哩DuliDuli15 小时前
AI创作工作区的项目上下文与多模态任务边界
android·人工智能·安全·ai·软件工程