移植udt到android

首先要装好并配置好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

 

你可能感兴趣的:(移植udt到android)