我正在尝试在 Android NDK 应用程序中使用 Grantlee 库。
我可以很好地编译 Grantlee,并且我得到了 libGrantlee_Templates.so
、libGrantlee_Templates.so.5
和 libGrantlee_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/