我有一个Android库项目'A',它包含'A / jni'文件夹中的原生C ++源代码,很好地构建到'A / libs / armeabi-v7a / libA.so'并且与其他平台相关。
我现在想制作一个Android项目'B',它包含Java内容以及'B / jni'文件夹中的更多本机C ++源代码。这些源使用项目“A”的C ++库中的代码。我已经设法通过设置我的
来编译这些 LOCAL_C_INCLUDES := (path_to_A/jni)
(即从项目'A'中获取头文件。)
问题:如何以干净的方式链接到'A / lib / armeabi-v7a / libA.so'?
我已经阅读了IMPORT_MODULE文档,但这似乎是针对您想要链接到纯NDK模块的情况,而不是位于Android库项目中的库。
答案 0 :(得分:1)
首先创建一个模块,将您的libA.so库编译为项目B中的预建共享库。
include $(CLEAR_VARS)
LOCAL_MODULE := libA
LOCAL_SRC_FILES := path/to/libA.so
include $(PREBUILT_SHARED_LIBRARY)
然后,通过以下方式将此模块添加到项目的主模块中:
LOCAL_SHARED_LIBRARIES := libA
我的项目中从未尝试过IMPORT_MODULE选项,但这适用于我的情况。
答案 1 :(得分:0)
@Kasper:你说:
LOCAL_C_INCLUDES := (path_to_B/jni)
你的意思是:
LOCAL_C_INCLUDES := (path_to_A/jni)