Android loadLibrary失败,错误为FindLibrary在使用时返回null。因此,从其他源返回
我有一个来自其他团队的libother_team.so文件,我已经在我的项目中直接添加了这个文件,路径为libs/armeabi-v7a/ 当我尝试加载这个库时,它失败了,错误如下Android loadLibrary失败,错误为FindLibrary在使用时返回null。因此,从其他源返回,android,android-ndk,Android,Android Ndk,我有一个来自其他团队的libother_team.so文件,我已经在我的项目中直接添加了这个文件,路径为libs/armeabi-v7a/ 当我尝试加载这个库时,它失败了,错误如下 java.lang.UnsatisfiedLinkError: Couldn't load other_team from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.testapp-1.apk, libraryPath
java.lang.UnsatisfiedLinkError: Couldn't load other_team from loader
dalvik.system.PathClassLoader[dexPath=/data/app/com.example.testapp-1.apk,
libraryPath=/data/app-lib/com.example.testapp-1]: findLibrary returned null
我在这个问题上被阻止了,非常感谢您对我的帮助。您是否将.so库放在了正确的路径上? 正确的路径是:
- /libs/armeabi
- /libs/armeabi-v7a
- /libs/mips
- /libs/x86
另外,请确保您试图调用的函数已正确地定义到C代码中(显然,Java本机方法正确地对应于C函数)。阅读了解更多信息。要将库安装到
/data/app lib/com.example.testapp-1,它必须遵循命名约定:libwhater.so。您将在静态构造函数中使用System.load(“任意”)
来加载它。您可以根据需要重命名第三方文件。请确保您的新名称足够独特,因为如果Android设备在/system/lib
中具有相同的名称,那么系统库将由Java加载。使用adb shell或终端列出/data/app lib/com.example.testapp-1的内容,因为您说自己构建它可以,但其他人提供的版本失败,他们很有可能使用了错误的工具链或设置。您可以将这些文件与ndk的readelf或objdump进行比较。此外,此错误消息似乎与我预期的不同。您使用什么命令显式加载本机库,运行该命令会导致什么出现在logcat中?(你肯定会看到一些关于成功或失败的信息)。是的,我有.so在right path\libs\armeabi-v7a\other_team.so中。但是仍然会出现上面的错误,为了验证同样的错误,我已经在我的\jni文件夹中添加了所有源代码。因此,它工作正常。但是在\libs\armeabi-v7a\other_team中只有.so没有相同的源。所以失败!!神像93号,你确定这是正确的路径吗?我相信项目文件夹通常是带有“s”的“libs”,而设备上的安装会自动结束在没有“s”的“lib”中。