Sto usando il codice nativo nella mia app per Android. In primo luogo stavo usando solo una libreria. Quindi tutto ha funzionato bene. Ma ora devo integrare un'altra libreria in essa. Non ho idea di quale dovrebbe essere la struttura ideale della cartella jni del mio progetto (come in dove posizionare l'intero codice, ecc.). Ho trovato un lavoro in giro. Ho creato due cartelle all'interno di jni .i.e library1 e library2. Di nuovo creato una cartella jni all'interno di entrambe le cartelle e inserito il rispettivo codice nelle cartelle.NDK che compila più librerie
Ho ottenuto la compilazione. Entrambi i file .so vengono generati, ma non riesco a utilizzarlo nella mia applicazione. Non riesco a caricare la libreria usando System.loadLibrary ("library1.so"); Ho anche provato a fornire il percorso completo. Ma fallito
Inoltre non ho idea di cosa scrivere all'interno del file Android.mk della cartella genitore jni.
struttura attuale: project_folder -> JNI -> library1 -> JNI -> "codice sorgente" di un Android.mk è scritto qui project_folder -> JNI -> Library2 -> JNI -> "codice sorgente" di Android .mk è scritto qui
UPDATE # 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.
io non sto usando Application.mk. Questo è il mio 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)
Inoltre, quando si utilizza loadLibrary, lasciare fuori la parte ".so", per esempio Sistema.LoadLibrary ("Library1"). – safety
Ho provato il tuo suggerimento. Ho iniziato con la prima libreria (lo zap è il suo nome, quindi la cartella). Ma sto ricevendo un errore di compilazione. Non so come inserire il codice in un commento. Si prega di controllare l'aggiornamento # 1. Grazie –
Se Android.mk è a /jni/Android.mk, quindi TOP_PATH deve essere impostato su $ (chiama my-dir)/.. –
safety