我在Android中使用c ++构建源代码,并创建了一个DSP.so.现在我想在第二个项目中使用这个.so。我能怎么做?在我的第二个项目中,我有这个结构:
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := nativo.cpp Parameters.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS += -llog -ldl
LOCAL_MODULE := native_code
include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_STL := stlport_static
APP_ABI := armeabi
APP_PLATFORM := android-8
我的nativo.cpp
#include "nativo.h"
#include "Parameters.h"
#include <correlation.h>
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace splab;
#include <android/log.h>
#define LOG_TAG "NATIVO"
#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__))
JNIEXPORT jlong JNICALL Java_com_example_vamostelo_Processing_init_1variables
(JNIEnv *, jclass){
}
JNIEXPORT jchar JNICALL Java_com_example_vamostelo_Processing_prueba_1nativa
(JNIEnv *, jclass, jlong, jbyteArray, jint){
}
文件correlation.h是我构建的库中的文件。那么我怎么能添加这个.so在我的第二个项目中我可以使用这个库的功能?
由于
答案 0 :(得分:1)
您必须从DSP.so
创建“本地共享库”,并在构建模块时引用它。
像这样的Android.mk
应该这样做:
LOCAL_PATH := $(call my-dir)
# Create `DSP-prebuilt` local prebuilt library from `DSP.so`
include $(CLEAR_VARS)
LOCAL_MODULE := DSP-prebuilt
LOCAL_SRC_FILES := path/to/DSP.so
LOCAL_EXPORT_C_INCLUDES := path/to/DSP/headers/folder
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := nativo.cpp Parameters.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS += -llog -ldl
LOCAL_MODULE := native_code
# Reference the local prebuilt:
LOCAL_SHARED_LIBRARIES := DSP-prebuilt
include $(BUILD_SHARED_LIBRARY)
请注意,生成的libs
文件夹将同时包含libDSP-prebuilt.so
和libnative_code.so
,这两个文件都必须为native_module
仅引用 {{1 }}
希望这有帮助!