gpt4 book ai didi

android - 发现多个文件的操作系统独立路径为 'lib/armeabi-v7a/libarcore_sdk_jni.so'

转载 作者:行者123 更新时间:2023-12-03 03:45:36 30 4
gpt4 key购买 nike

我知道在 SO 上有一些类似的问题,但它对我不起作用......

我创建了使用 ArCore 的 Android 库。如果我使用创建的 ndk 库,那么如何不包含 .so 文件是一个问题?还有一个答案听起来不错

https://stackoverflow.com/a/58963852/5709159

但是在我将 libarcore.so 文件放在我的 jniLib 下之后

enter image description here

我遇到这样的错误

More than one file was found with OS independent path 'lib/armeabi-v7a/libarcore_sdk_jni.so'

所以,我尝试用这种方式修复它

https://stackoverflow.com/a/44962630/5709159

sourceSets.main {
jniLibs.srcDir 'src/main/jniLibs'
jni.srcDirs = [] //disable automatic ndk-build call
}

https://stackoverflow.com/a/56453718/5709159

packagingOptions {
pickFirst 'src/main/jniLibs/arm64-v8a/libarcore_sdk_jni.so'
pickFirst 'src/main/jniLibs/armeabi-v7a/libarcore_sdk_jni.so'
pickFirst 'src/main/jniLibs/x86/libarcore_sdk_jni.so'
pickFirst 'src/main/jniLibs/x86_64/libarcore_sdk_jni.so'
}

然后这个

packagingOptions {
pickFirst 'lib/arm64-v8a/libarcore_sdk_jni.so'
pickFirst 'lib/armeabi-v7a/libarcore_sdk_jni.so'
pickFirst 'lib/x86/libarcore_sdk_jni.so'
pickFirst 'lib/x86_64/libarcore_sdk_jni.so'
}

还有这个 包装选项{ 排除'lib/arm64-v8a/libarcore_sdk_jni.so' 排除'lib/armeabi-v7a/libarcore_sdk_jni.so' 排除'lib/x86/libarcore_sdk_jni.so' 排除'lib/x86_64/libarcore_sdk_jni.so'

没有任何帮助。

据我所知,问题是 - 我的 jniLibs 目录下有一份 arcore.so 文件,一份是在 Build 之后创建的> 这里

enter image description here

那么,如何解决呢?

最佳答案

您可能已经添加了共享的 .so 文件从源构建(或以其他方式引用它们)。

一个人不能同时做这两件事,所以你要么需要从 source 开始构建并删除那些 .so 文件 - 或者删除 arcore-android-sdk 模块并保留 .so 文件。 Java dependencies 也可能引入 native 程序集,而 build.gradle 的那部分缺失(只需浏览“外部库”中的 AR 核心以查看它包含的内容,以防它存在于那里)。使用预建库通常可以更快地构建并节省时间 - 建议这样做,除非需要编辑 cpp 源。

通常可以在此 build.gradle 中提供类似的依赖项:

dependencies {
implementation "com.google.ar:core:1.13.0"
natives "com.google.ar:core:1.13.0"
}

// Extracts the shared libraries from aars in the natives configuration.
// This is done so that NDK builds can access these libraries.
task extractNativeLibraries() {
// Always extract, this ensures the native libs are updated if the version changes.
outputs.upToDateWhen { false }
doFirst {
configurations.natives.files.each { f ->
copy {
from zipTree(f)
into arcore_libpath
include "jni/**/*"
}
}
}
}

tasks.whenTaskAdded {
task-> if (task.name.contains("external") && !task.name.contains("Clean")) {
task.dependsOn(extractNativeLibraries)
}
}

如果配置不当,此类 Gradle 任务也可能是重复的原因。 packagingOptions 在任何情况下都是错误的方法,因为链接器已经不知道要链接哪一个。

关于android - 发现多个文件的操作系统独立路径为 'lib/armeabi-v7a/libarcore_sdk_jni.so',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58969292/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com