gpt4 book ai didi

android - java.lang.UnsatisfiedLinkError : dlopen failed: 错误

转载 作者:太空狗 更新时间:2023-10-29 13:50:21 26 4
gpt4 key购买 nike

我在我的项目中添加 .so 文件时遇到问题,从其他人那里,我尝试了不同的解决方案,但没有任何解决方案可以帮助我。

案例:1 我曾尝试将我的 .so 放入 src/main/jniLibs 和我在以下行中添加的 gradle 文件中,但出现了相同的错误。

 android {
sourceSets.main.jni.srcDirs = []
}

案例:2 我添加了带有 native-lib.cpp 的 cpp 文件夹,并在 gradle 中添加了以下代码:

defaultConfig {
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}

案例:3 我创建了一个支持 c/c++ 的新项目,并在 cpp 文件夹下添加了一个 .so 文件,并在 gradle 中添加了以下代码:

defaultConfig {
externalNativeBuild {
cmake {
cppFlags "-std=c++11"

}
}
}

My project architecture

错误代码:

FATAL EXCEPTION: main
Process: ai.kitt.snowboy.demo, PID: 15175
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/ai.kitt.snowboy.demo-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libsnowboy-detect-android.so"
at java.lang.Runtime.loadLibrary(Runtime.java:366)
at java.lang.System.loadLibrary(System.java:988)
at ai.kitt.snowboy.audio.RecordingThread.<clinit>(RecordingThread.java:20)
at ai.kitt.snowboy.Demo.onCreate(Demo.java:49)
at android.app.Activity.performCreate(Activity.java:6010)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413)
at android.app.ActivityThread.access$800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)

我使用的是android studio 3.0.1,gradle: 3.0.1

最佳答案

尝试在 build.gradle 中添加:

sourceSets.main.jniLibs.srcDirs = ['src/main/jniLibs']

或在 android block 中添加以下内容:

sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}

Gradle 在读取默认 jniLibs 路径时可能会出现问题,只需将其设为隐式即可。

sourceSets.main.jni.srcDirs 不起作用,因为它定义了 jni source,例如 cpp 源文件文件夹。

异常堆栈 nativeLibraryDirectories=[/vendor/lib,/system/lib]]] 显示系统根本没有检测到您的库。要验证它,请检查您的 apk 以查看是否有 /lib 文件夹和您的 *.so

关于android - java.lang.UnsatisfiedLinkError : dlopen failed: 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48678598/

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