Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过ndk构建从Android库项目链接到共享库_Java_Android_C++_Android Ndk - Fatal编程技术网

Java 通过ndk构建从Android库项目链接到共享库

Java 通过ndk构建从Android库项目链接到共享库,java,android,c++,android-ndk,Java,Android,C++,Android Ndk,我有一个Android库项目“a”,它包含了在'A/JNI '文件夹中的本地C++源,它很好地构建为“A/LIBS/ARMABIV-V7A/LIBA. SO”,并与其他平台相关。 我现在想做一个Android项目“B”,它包含java的东西,还有B/JNI文件夹中的更多C++源。这些源使用项目“A”的C++库中的代码。通过设置我的 LOCAL_C_INCLUDES := (path_to_A/jni) (即,它从项目“A”中提取头文件) 问题是:如何以干净的方式链接到“A/lib/ar

我有一个Android库项目“a”,它包含了在'A/JNI '文件夹中的本地C++源,它很好地构建为“A/LIBS/ARMABIV-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_模块文档,但这似乎是针对一种情况,即您希望链接到纯NDK模块,而不是安卓库项目中的库。

首先创建一个模块,将编译您的libA.so库作为项目B中的预建共享库

include $(CLEAR_VARS)
LOCAL_MODULE := libA
LOCAL_SRC_FILES := path/to/libA.so
include $(PREBUILT_SHARED_LIBRARY)
然后,通过以下方式将此模块添加到项目的主模块中:

LOCAL_SHARED_LIBRARIES := libA
我从未在我的项目中尝试过导入模块选项,但这在我的情况下有效。

@Kasper:你说:

LOCAL_C_INCLUDES  := (path_to_B/jni)
你是说:

LOCAL_C_INCLUDES  := (path_to_A/jni)

只需完成此回答:为了使其正常工作,环境变量NDK_MODULE_PATH需要包含libA顶级文件夹的位置,并且您需要为项目B将$(调用导入模块,libA)添加到Android.mk的末尾。是的,抱歉,现在已修复。