NDK-如何在另一个项目中使用生成的.so库

|| 我已经成功地使用ndk在一个项目中构建和使用
.so
文件。我需要在另一个项目中使用此库。我宁愿不复制源代码,而只使用库。 尝试将整个
libs/armeabi/libcommon.so
复制并粘贴到项目根目录不起作用,我认为因为
libs/armeabi
是android生成的路径。 那么什么是最好的方法呢? 我正在使用Eclipse-Galileo和ndk5。     
已邀请:
有一种更简单的方法来完成所有这些工作。 假设您的预建库名为\“ libprebuilt.so \” 在只希望包含预建库的新项目的项目文件夹中,执行以下操作:
mkdir -p jni/libprebuilt
cp libprebuilt.so jni/libprebuilt
然后,只需创建一个jni / libprebuilt / Android.mk文件:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libprebuilt
LOCAL_SRC_FILES := libprebuilt.so
include $(PREBUILT_SHARED_LIBRARY)
然后,当您执行ndk-build时,它将把这个库复制到libs / armeabi /中。     
我想出了一种方法来执行此操作,因此将其发布在此处,以防其他人遇到它。 要共享的代码(包括Java JNI包装器,本机代码,.so库)应位于单独的项目中。右键单击项目名称->属性-> Android属性->选中标记\“是库\”,将其转换为Library项目。该项目现在无法执行,但可以被其他项目引用。 在将使用共享库的项目中,通过右键单击项目名称->属性-> Android属性-> Library / \“ Add \”,添加对Libarray项目的引用。这将显示在上一步中创建的Library项目。选择它。 现在,可以轻松在不同项目之间引用.so。     
所有JNI(Java本机接口)函数名称中都有一个包名称(如
JNIEXPORT void JNICALL Java_com_myapp_myclass_funct
)。所以我想您应该在库中重命名这些函子,然后重新编译。或者,可以将其用作应用程序中的外部软件包。     

要回复问题请先登录注册