java.lang.UnsatisfiedLinkError:dalvik.system.PathClassLoader

新手上路,请多包涵

有没有人遇到过这个错误?

 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.swig.simple-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "liborg.swig.simple.example.so"

当我以这种方式加载库时发生错误。

 static {
    System.loadLibrary("example");
}

我确定当前文件夹中存在“示例”类。

原文由 developergg 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

请注意,有一个命名约定。您的库需要被称为 libexample.so 。

LoadLibrary(“example”) 将查找 libexample.so。

.so 库需要位于 lib 文件夹下的 apk 中(因为您正在为 Android 开发,所以它需要位于 lib/armeabi 和 lib/armeabi-v7a 文件夹下 - 为什么这两个文件夹?某些版本的 Android 位于 lib 下/armeabi 和一些在 lib/armeabi-v7a 下查看…看看对你有用的东西)。

其他要寻找的东西:

  • 确保为正确的体系结构进行编译(如果为 armeabi v5 进行编译,它将不适用于 armeabiv7 或 armeabiv7s )。

  • 确保您导出的原型在正确的类中使用(检查 hello jni 示例。您的公开函数需要类似于 Java_mypackagename_myjavabridgeclass_myfunction)。

例如,函数 Java_com_example_sample_hello 将在 java 类 com.example.sample 中翻译,函数 hello。

原文由 MichaelCMS 发布,翻译遵循 CC BY-SA 3.0 许可协议

这就是我解决这个特定问题的方法

在应用程序级别中包含以下代码 build.gradle 内部 android { }

 externalNativeBuild {
        cmake {
            path "/CMakeLists.txt"

        }
    }

确保 CMakeLists.txt 存在于正确的位置

确保安装了 CMakeNDK 。按照此处提到的步骤安装相同的

https://developer.android.com/studio/projects/install-ndk

本机文件位于 jni 文件夹中,该文件夹位于 Main 文件夹下,如图所示 在此处输入图像描述

我都没用过

ndk {
            abiFilters "arm64-v8a", "armeabi-v7a", "x86", "x86_64"
        }

也不包括在内

android.useDeprecatedNdk=true

gradle.properties 文件

如果在“构建”选项卡中一切都正确完成,我们可以看到

任务:NightSkyApps:buildCMakeDebug[x86]

任务:NightSkyApps:configureCMakeDebug[x86_64]

任务:NightSkyApps:buildCMakeDebug[x86_64]

如果出现任何问题,则上述任务将失败,这可以在“构建”选项卡中看到。

我在 Android Studio 模拟器 Pixel 4:API 31 上遇到问题。Android Studio 版本

Android Studio Dolphin | 2021.3.1
Build #AI-213.7172.25.2113.9014738, built on September 1, 2022

构建梯度

classpath 'com.android.tools.build:gradle:7.2.2'

原文由 tanni tanna 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题