Android アプリでネイティブ コードを使用しています。まず、私は1つのライブラリしか使用していませんでした。そのため、すべてがうまくいきました。しかし今、もう 1 つのライブラリをそれに統合する必要があります。プロジェクトの jni フォルダーの理想的な構造がどうあるべきかわかりません (コード全体を配置する場所など)。回避策を見つけました。jni .ie library1 と library2 内に 2 つのフォルダーを作成しました。両方のフォルダー内に jni フォルダーを再度作成し、それぞれのコードをフォルダーに配置しました。
コンプしてもらいました。両方の .so ファイルが生成されていますが、アプリケーションで使用できません。System.loadLibrary("library1.so"); を使用してライブラリをロードできません。また、フルパスを提供しようとしました。しかし失敗した
また、親 jni フォルダーの Android.mk ファイル内に何を書き込むべきかわかりません。
現在の構造: project_folder -> jni -> library1 -> jni -> "source code" Android.mk はここに書かれています project_folder -> jni -> library2 -> jni -> "source code" 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)