我在我的 android 应用程序中使用本机代码。首先,我只使用一个库。所以一切正常。但现在我必须再将一个库集成到其中。我不知道我的项目的 jni 文件夹的理想结构应该是什么(如放置整个代码的位置等)。我找到了解决办法。我在 jni .ie library1 和 library2 中创建了两个文件夹。再次在两个文件夹中创建了一个 jni 文件夹,并将各自的代码放置在文件夹中。
我得到它来编译。正在生成两个 .so 文件,但我无法在我的应用程序中使用它。我无法使用 System.loadLibrary("library1.so"); 加载库 还尝试提供完整路径。但失败了
我也不知道在父 jni 文件夹的 Android.mk 文件中写什么。
当前结构:project_folder -> jni -> library1 -> jni -> "source code" an Android.mk 写在这里 project_folder -> jni -> library2 -> jni -> "source code" an Android.mk 写在这里
更新#1:
Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
make: *** No rule to make target `jni/zap/jni/zap/zap/error.c', needed by `obj/local/armeabi/objs-debug/zap/jni/zap/zap/error.o'. Stop.
我没有使用 Application.mk。这是我的 Android.mk:
TOP_PATH := $(call my-dir)
# Build library 1
include $(CLEAR_VARS)
LOCAL_PATH := $(TOP_PATH)/zap
LOCAL_MODULE := zap
LOCAL_C_INCLUDES := $(LOCAL_PATH)/zap
LOCAL_SRC_FILES := $(LOCAL_PATH)/zap/error.c \
$(LOCAL_PATH)/zap/hello-jni.c \
$(LOCAL_PATH)/zap/zap.c \
$(LOCAL_PATH)/zap/zapd.c \
$(LOCAL_PATH)/zap/zaplib.c
include $(BUILD_SHARED_LIBRARY)