Android NDK项目为我的.so文件添加了另一个“lib”

时间:2015-08-11 01:05:57

标签: android android-ndk shared-libraries

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

  

Java - > C(JNI) - > C ++函数

这是我的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”),它就可以工作了。但这感觉就像一个hacky解决方案,我宁愿不同时拥有“libmodule_service.so”和“liblibmodule_service.so”,它们是完全相同的文件。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

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