Android NDK 项目添加另一个 "lib" 到我的 .so 文件

Android NDK project adding another "lib" to my .so file

我正在尝试使用我的 C JNI 代码中的 C++ 函数(使用 .so 文件引用)。为了说明我的项目架构,它看起来像这样:

Java -> C (JNI) -> C++ function

这是我的 Android.mk 文件的样子:

LOCAL_PATH := $(call my-dir)

# My C++ library
include $(CLEAR_VARS)
LOCAL_MODULE := my_module
LOCAL_SRC_FILES := ../../../../../../module_service/lib/system/lib/libmodule_service.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

# JNI C code
LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c

LOCAL_C_INCLUDES += ../../../../../module_service/src
LOCAL_SHARED_LIBRARIES := my_module

include $(BUILD_SHARED_LIBRARY)

使用 "ndk-build" 命令,构建了我的项目。但是当我尝试在我的设备上 运行 它时,它崩溃并显示以下消息:

java.lang.UnsatisfiedLinkError: ... nativeLibraryDirectories=[/data/app/com.sampleapp.mysampleapplication-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "liblibmodule_service.so"

什么是向我的 .so 文件添加另一个 "lib"?如果我在我的 /system/lib 目录中创建另一个名为 "liblibmodule_service.so"(除了 "libmodule_service.so")的 .so 文件,它就可以工作。但这感觉像是一个 hacky 解决方案,我宁愿不要同时拥有 "libmodule_service.so" 和 "liblibmodule_service.so" 这两个完全相同的文件。

如有任何帮助,我们将不胜感激。谢谢!

我猜你可能正在使用System.loadLibrary("libmodule_service");加载库,将其更改为System.loadLibrary("module_service");