Używam natywnego kodu w mojej aplikacji na Androida. Po pierwsze korzystałem tylko z jednej biblioteki. Wszystko działało dobrze. Ale teraz muszę zintegrować z nim jeszcze jedną bibliotekę. Nie mam pojęcia, jaka powinna być idealna struktura folderu jni mojego projektu (jak gdzie umieścić cały kod, itp.). Znalazłem pracę. Wewnątrz jni .i.e library1 i library2 utworzyłem dwa foldery. Ponownie stworzyłem folder jni wewnątrz obu folderów i umieściłem odpowiedni kod w folderach.NDK kompilacja wielu bibliotek
Mam go do kompilacji. Oba pliki .so są generowane, ale nie mogę ich użyć w mojej aplikacji. Nie mogę załadować biblioteki przy użyciu System.loadLibrary ("library1.so"); Próbowałem również zapewnić pełną ścieżkę. Ale nie udało się
Również nie mam pojęcia, co napisać w pliku Android.mk folderu macierzystego jni.
Obecna struktura: project_folder -> JNI -> library1 -> JNI -> "kod źródłowy" an Android.mk tu jest napisane project_folder -> JNI -> library2 -> JNI -> "kod źródłowy" Android .mk tu jest napisane
Aktualizacja # 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.
nie używam Application.mk. To mój 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)
Ponadto, przy użyciu LoadLibrary, pominąć „.so” część, na przykład System.loadLibrary ("library1"). – safety
Próbowałem twojej sugestii. Zacząłem od pierwszej biblioteki (zap jest jej nazwą, stąd folder). Ale dostaję błąd kompilacji. Nie wiem, jak opublikować kod w komentarzu. Sprawdź aktualizację nr 1. Dzięki –
Jeśli Android.mk ma numer/jni/Android.mk, to TOP_PATH powinno być ustawione na $ (call my-dir)/.. –
safety