我試圖將Jnetpcap(一個Java包裝與libpcap與JNI)移植到Android。我已經設法將libpcap編譯爲靜態庫,使用此存儲庫中的源代碼:https://github.com/android/platform_external_libpcap和我獲得的libpcap.aAndroid NDK:使用libpcap爲Android編譯錯誤 - 函數「未在此範圍內聲明」
當試圖將Jnetpcap編譯爲共享庫(以及與libpcap.a鏈接)時,我因爲某些libpcap的函數「未在此範圍內聲明」而出現錯誤。這些函數是:pcap_create(),pcap_activate(),pcap_can_set_rfmon(),pcap_set_buffer_size(),pcap_set_promisc(),pcap_set_snaplen()和pcap_set_timeout()。
這些函數存在於libpcap的原始版本(包libpcap-dev提供的那個版本)中,但似乎android版本沒有它們。可以針對intel x86和x64平臺編譯相同的Jnetpcap源文件,而不會出現任何問題。
我做錯了什麼?這些功能是否真的缺失?
我希望你們中的任何人都知道如何解決這個問題。謝謝。
感謝您的幫助。我降級到Jnetpcap 1.2,它與libpcap 0.9.8一起工作。我正在進行一些測試,但似乎我已經有了適用於Android的Jnetpcap 1.2工作端口。 它不支持實時捕獲,因爲該應用程序不能作爲root運行,但解析功能應該很好地工作。 – Jimix 2011-03-31 11:03:36