2

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

4

2 回答 2

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 选项,但这适用于我的情况。

于 2013-09-04T06:01:12.260 回答
0

@Kasper:你说:

LOCAL_C_INCLUDES  := (path_to_B/jni)

你的意思:

LOCAL_C_INCLUDES  := (path_to_A/jni)

?

于 2014-03-26T14:22:24.770 回答