首先要裝好並配置好NDK,下載UDT源碼。下面從建立jni目錄開始
1 建立jni目錄,可以是任意的xxxxxx/jni
2 把udt源碼移動或拷貝到jni目錄下
../udt-test/jni/UDT4
3 建立Android.mk
在udt的src目錄下添加Android.mk檔案,其內容如下:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)APP_STL := gnustl_staticLOCAL_CFLAGS := -DLINUX -fvisibility=hiddenLOCAL_ARM_MODE := armLOCAL_CPPFLAGS := -fPIC -Wall -Wextra -DLINUX -finline-functions -O3 -fno-strict-aliasing -fvisibility=hiddenLOCAL_LDLIBS :=-L$(SYSROOT)/usr/lib -llogLOCAL_C_INCLUDES := /usr/include/c++/4.5/LOCAL_CPP_EXTENSION:=.cppLOCAL_MODULE := udtLOCAL_SRC_FILES := md5.cpp common.cpp window.cpp list.cpp buffer.cpp packet.cpp channel.cpp queue.cpp ccc.cpp cache.cpp core.cpp epoll.cpp api.cppinclude $(BUILD_SHARED_LIBRARY)
設定工程目錄:
export NDK_PROJECT_PATH=~/Desktop/wshare/udt-test
之後輸入ndk-build進行編譯會出現如下錯誤
Android NDK: Your APP_BUILD_SCRIPT points to an unknown file:
因為還有Android.mk未建立
分別在jni目錄和udt目錄下建立Android.mk,檔案內容均為
include $(all-subdir-makefiles)
ndk-build進行編譯會出現如下錯誤
error: fstream: No such file or directory
error: set: No such file or directory
error: string: No such file or directory
error: vector: No such file or directory
因為還有一步
在jni目錄下建立Application.mk,其內容如下
APP_STL := gnustl_static
OK,小功告成。編譯完成後會在jni目錄下產生兩個目錄,libs,obj。可以在其中找到產生的動態庫libudt.so
我想要的是靜態庫libudt.a,怎麼辦呢?
很簡單,把上面Android.mk中的這一行include $(BUILD_SHARED_LIBRARY)
換成include $(BUILD_STATIC_LIBRARY)
然後輸入ndk-build,沒什麼反應。嗯……
還得在上面提到的Application.mk檔案中添加如下內容
APP_MODULES := libudt