Android NDK 和 .so.X 扩展

标签 android android-ndk

我正在尝试在 Android NDK 应用程序中使用 Grantlee 库。

我可以很好地编译 Grantlee,并且我得到了 libGrantlee_Templates.solibGrantlee_Templates.so.5libGrantlee_Templates.so.5.0.0.

这三个中,我只能在我的 Android.mk 中安装第一个:

include $(CLEAR_VARS)
LOCAL_MODULE := libgrantlee
LOCAL_SRC_FILES := $(GRANTLEE_PATH)/lib/libGrantlee_Templates.so
include $(PREBUILT_SHARED_LIBRARY)

因为如果我尝试安装其他两个中的任何一个,那么我会得到:

Android NDK: ERROR:Android.mk:grantlee: LOCAL_SRC_FILES should point to a file ending with ".so"
Android NDK: The following file is unsupported: libGrantlee_Templates.so.5

但是,就像一个残酷的笑话,我无法安装的 .so.5 正是它在运行时寻找的文件:

E/AndroidRuntime(14439): java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "libGrantlee_Templates.so.5"; caused by library "libGrantlee_Templates.so.5" not found

我该如何解决?

最佳答案

当您使用 NDK 独立工具链构建原生共享库时,您必须更改其 make 文件以去除 .version 后缀。例如,看看这是如何 done for ffmpeg .

关于Android NDK 和 .so.X 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527387/

相关文章:

android - cygwin中的ndk-build错误

java - 奇怪的 java.lang.UnsatisfiedLinkError : Native method not found:

Android - 为不同的处理器架构构建单独的 APK

android - Android应用程序显示默认图标启动器

android - 错误 : Error parsing XML: unbound prefix in admob

java - 无法启动 Activity ComponentInfo - 二进制 XML 文件行

android - NDK c++ std::thread 在加入时中止崩溃

java - 如何添加和使用 MarkdownView android 库

android - AppCompatRadioButton 的 RadioGroup 不适用于 Jelly Bean?

linux - 如何在 Fedora 中安装 NDK?