如何使用android插件打包openCV android sdk?

问题描述 投票:0回答:1

我需要为

android
创建一个
Godot Game engine
插件。我的
android
插件需要
openCV
功能。我已经成功使用
this
教程将
openCV
集成到我的 android 项目中,但我的
openCV
插件中也需要
android
,所以我在我的
implementation(project(":openCV"))
插件的
android
中添加了
build.gradle
作为好吧,我需要将我的插件导出为
Android Archive (aar)
格式,因此我使用
./gradlew assemble
命令,但问题是我的 aar 不包含 openCV sdk,即使我在我的
implementation(project(":openCV"))
插件的 build.gradle 中添加了
android

为了将 openCV 打包到我的插件的 aar 文件中,我尝试将以下代码添加到我的 android 插件的 build.gradle 中,但它们都不起作用

第一次尝试:

packagingOptions {
        resources.pickFirsts.add("opencv_folder/**")
    }

第二次尝试:

packagingOptions {
        resources.pickFirsts.add("**/*")
    }

第三次尝试:

 packagingOptions {
        jniLibs.pickFirsts.add("**/*.so")
    }

第四次尝试:

sourceSets {
        main {
            jniLibs.srcDirs("path_to_opencv_folder")
        }
    }

第五次尝试:

 packagingOptions {
        jniLibs.pickFirsts.add("**/*.so")
    }

第六次尝试:

 packagingOptions {
        jniLibs.pickFirsts.add("lib/**/*.so")
    }

第七次尝试:

packagingOptions {
        jniLibs.pickFirsts.add("**/opencv_module_folder/**/*.so")
    }

第八次尝试:

 sourceSets {
        named("main") {
            java.srcDirs(file("../opencv_module_folder/src/main/java"))
        }
    }

第九次尝试:

sourceSets {
        getByName("main").java.srcDirs = files("../opencv_module_folder/src/main/java")
    }

第十次尝试:

packagingOptions {
        // Include all necessary files from OpenCV
        from(project(":openCV")) {
            include("**/*.so")
        }
    }

第十一次尝试:

tasks {
        val createAar by tasks.creating(Jar::class) {
            archiveBaseName.set("YourPluginName")
            archiveExtension.set("aar")
            destinationDirectory.set(file("path/to/output/folder"))
            from android.sourceSets.main.java.classes
            from android.sourceSets.main.resources
            from('openCV/build/outputs/aar') { // include OpenCV AAR file
                include '*.aar'
            }
        }
    }

我有点困惑我需要从

openCV
得到什么。我是否只需要每个
.so
架构的
android
文件以及
openCV
sdk

中的所有文件
android opencv gradle android-gradle-plugin gradle-kotlin-dsl
1个回答
0
投票

要生成 AAR,您需要在项目中进行某些更改。

  1. 配置

    build.gradle
    文件:

    • 找到您的库模块的
      build.gradle
      文件。
    • android
      块中添加以下行:
    plugin 'com.android.library'
    

    此行告诉 Gradle(构建系统)将您的项目视为 Android 库。

  2. 构建过程的输出:

  • 构建库项目后,编译和打包的输出将位于

    build/outputs/aar/[your module]
    目录中。

  • 此目录包含一个

    .aar
    (Android Archive)文件,这是其他应用程序可以使用的实际库文件。

  • 您可以在

    build.gradle
    文件中为您的库定义各种配置,例如指定最低 SDK 版本和依赖项。

  • 当另一个应用程序使用您的库时,它会将

    .aar
    文件作为依赖项包含在其自己的
    build.gradle
    文件中。

通过创建 Android 库,您可以简化您的开发流程,并使您的代码可在不同项目中重用。

所提供的链接提供了更多详细信息:

开放简历参考资料

https://opencv.org/opencv4android-samples/

https://central.sonatype.com/artifact/org.opencv/opencv/overview

https://github.com/opencv/opencv/wiki/Building_OpenCV4Android_from_trunk

© www.soinside.com 2019 - 2024. All rights reserved.