J'essaie de porter Jnetpcap vers Android afin de l'utiliser pour analyser les fichiers .pcap. Jnetpcap est un wrapper Java pour libpcap qui utilise JNI. I ont compilé libpcap en tant que bibliothèque statique en utilisant l'arborescence du code source d'Android.
Lors de la compilation de Jnetpcap en tant que bibliothèque partagée, je reçois des erreurs car je dois créer un lien avec libpcap.a mais je ne sais pas comment dire à Android.mk qu'il doit établir un lien avec le fichier libpcap.a que j'ai.
L'utilisation de "LOCAL_STATIC_LIBRARIES: = libpcap" ne fonctionnera pas car libpcap ne vient pas par défaut dans le Android NDK.
Si vous pouviez m'aider, je vous en serais très reconnaissant.
Voici mon fichier Android.mk actuel:
include /home/sergio/workspace/MyApp/jni/libpcap/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := jnetpcap
LOCAL_SRC_FILES :=\
jnetpcap.cpp\
packet_flow.cpp\
packet_jheader.cpp\
jnetpcap_pcap_header.cpp\
nio_jbuffer.cpp\
winpcap_stat_ex.cpp\
winpcap_send_queue.cpp\
winpcap_ext.cpp\
jnetpcap_ids.cpp\
jnetpcap_dumper.cpp\
jnetpcap_utils.cpp\
util_in_cksum.cpp\
jnetpcap_beta.cpp\
nio_jmemory.cpp\
packet_jsmall_scanner.cpp\
packet_protocol.cpp\
nio_jnumber.cpp\
packet_jheader_scanner.cpp\
library.cpp\
packet_jscan.cpp\
jnetpcap_pcap100.cpp\
util_checksum.cpp\
packet_jpacket.cpp\
winpcap_ids.cpp\
jnetpcap_bpf.cpp
LOCAL_C_INCLUDES := /home/sergio/Android-ndk-r5b/platforms/Android-8/Arch-arm/usr/include /home/sergio/workspace/Shark/jni/libpcap
LOCAL_STATIC_LIBRARIES := libpcap
include $(BUILD_SHARED_LIBRARY)
Vous devez construire pcap comme module statique. Quelque chose comme ça
include $(CLEAR_VARS)
LOCAL_MODULE := pcap
LOCAL_CFLAGS := declare_flags
LOCAL_C_INCLUDES := declare_include
LOCAL_SRC_FILES := src_files
include $(BUILD_STATIC_LIBRARY)
Ce build pcap en tant que module local que vous pouvez lier avec LOCAL_STATIC_LIBRARIES
ajoutez simplement
LOCAL_STATIC_LIBRARIES := pcap
avant d'appeler
include $(BUILD_SHARED_LIBRARY)
Enfin résolu. Mon code Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libpcap
LOCAL_SRC_FILES := libpcap.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := jnetpcap
LOCAL_SRC_FILES :=\
jnetpcap.cpp\
packet_flow.cpp\
packet_jheader.cpp\
jnetpcap_pcap_header.cpp\
nio_jbuffer.cpp\
winpcap_stat_ex.cpp\
winpcap_send_queue.cpp\
winpcap_ext.cpp\
jnetpcap_ids.cpp\
jnetpcap_dumper.cpp\
jnetpcap_utils.cpp\
util_in_cksum.cpp\
jnetpcap_beta.cpp\
nio_jmemory.cpp\
packet_jsmall_scanner.cpp\
packet_protocol.cpp\
nio_jnumber.cpp\
packet_jheader_scanner.cpp\
library.cpp\
packet_jscan.cpp\
jnetpcap_pcap100.cpp\
util_checksum.cpp\
packet_jpacket.cpp\
winpcap_ids.cpp\
jnetpcap_bpf.cpp
LOCAL_C_INCLUDES :=\
/home/sergio/Android-ndk-r5b/platforms/Android-8/Arch-arm/usr/include\
/home/sergio/workspace/MyApp/jni/libpcap
LOCAL_STATIC_LIBRARIES := libpcap
include $(BUILD_SHARED_LIBRARY)