首先要裝好並配置好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_static LOCAL_CFLAGS := -DLINUX -fvisibility=hidden LOCAL_ARM_MODE := arm LOCAL_CPPFLAGS := -fPIC -Wall -Wextra -DLINUX -finline-functions -O3 -fno-strict-aliasing -fvisibility=hidden LOCAL_LDLIBS :=-L$(SYSROOT)/usr/lib -llog LOCAL_C_INCLUDES := /usr/include/c++/4.5/ LOCAL_CPP_EXTENSION:=.cpp LOCAL_MODULE := udt LOCAL_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.cpp include $(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