使用ndk-build链接到Android库项目的共享库

时间:2013-09-03 20:28:18

标签: java android c++ android-ndk

我有一个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库项目中的库。

2 个答案:

答案 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)