首先要装好并配置好NDK,下载UDT源码。下面从创建jni目录开始
1 创建jni目录,可以是任意的xxxxxx/jni
2 把udt源码移动或拷贝到jni目录下 ../udt-test/jni/UDT43 创建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 directoryerror: set: No such file or directoryerror: string: No such file or directoryerror: 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