我在 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)
应用程序.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 并且在我的第二个项目中我可以使用这个库的功能?
谢谢
最佳答案
您必须从 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
仅引用 DSP
。
希望这对您有所帮助!
关于android - 在 Android 的第二个项目中添加 .so 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21041231/