我需要为
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 中的所有文件
要生成 AAR,您需要在项目中进行某些更改。
配置
build.gradle
文件:
build.gradle
文件。android
块中添加以下行:plugin 'com.android.library'
此行告诉 Gradle(构建系统)将您的项目视为 Android 库。
构建过程的输出:
构建库项目后,编译和打包的输出将位于
build/outputs/aar/[your module]
目录中。
此目录包含一个
.aar
(Android Archive)文件,这是其他应用程序可以使用的实际库文件。
您可以在
build.gradle
文件中为您的库定义各种配置,例如指定最低 SDK 版本和依赖项。
当另一个应用程序使用您的库时,它会将
.aar
文件作为依赖项包含在其自己的 build.gradle
文件中。
通过创建 Android 库,您可以简化您的开发流程,并使您的代码可在不同项目中重用。
所提供的链接提供了更多详细信息:
https://developer.android.com/studio/projects/android-library
https://docs.gradle.org/current/userguide/tutorial_using_tasks.html解释Gradle任务
https://developer.android.com/studio/projects/android-library提供了有关用于Android库的AAR格式的官方文档。
开放简历参考资料
https://opencv.org/opencv4android-samples/
https://central.sonatype.com/artifact/org.opencv/opencv/overview
https://github.com/opencv/opencv/wiki/Building_OpenCV4Android_from_trunk