私はアンドロイドアプリでネイティブコードを使用しています。まず、私は1つのライブラリだけを使用していました。だからすべてうまくいった。しかし、今ではもう一つのライブラリをそれに統合する必要があります。私は、私のプロジェクトのjniフォルダの理想的な構造(コード全体を配置する場所など)が何であるか分かりません。私は仕事を見つけました。 jni.i.e library1とlibrary2の中に2つのフォルダを作成しました。もう一度両方のフォルダ内にjniフォルダを作成し、それぞれのコードをフォルダに配置します。複数のライブラリをコンパイルするNDK
私はそれをコンパイルしました。両方の.soファイルが生成されていますが、アプリケーションで使用できません。 System.loadLibrary( "library1.so")を使用してライブラリを読み込むことはできません。また、完全なパスを提供しようとしました。しかし失敗しました
また、私は親JniフォルダのAndroid.mkファイルの中に何を書くべきか分かりません。
現在の構造: project_folder - > JNI - >ライブラリ1 - > JNI - > "ソースコード" Android.mkがここに書かれている project_folder - > JNI - > library2 - > JNI - > "ソースコード" のAndroid私はApplication.mkを使用していない
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.
:の.mkはここ
UPDATE#1を書かれています。 これは私の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)
をまた、LoadLibrary関数を使用するとき、「.soの」一部を残して、例えばシステム。loadLibrary( "library1")。 – safety
私はあなたの提案を試みました。私は最初の図書館(zapという名前はフォルダなので)から始めました。しかし、私はコンパイルエラーを取得しています。私はコメントにコードを投稿する方法を知らない。アップデート#1を確認してください。ありがとう –
Android.mkが /jni/Android.mkの場合、TOP_PATHを$(call my-dir)/ ..に設定する必要があります。 –
safety