移植UDT到android

本文介绍如何将UDT协议移植到Android平台并通过JNI方式进行调用,包括配置环境变量、创建JNI版本文件、编写Android.mk文件及加载动态库等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发过程中,需要使用UDT协议,由于server端使用的是c++版本的udt库,而Android版本在使用udt java版本和c++版本通信时,发现一些问题,google后发现目前的java version can not talk with c++ version,所以只能通过将UDT移植到android上,然后通过JNI的方式进行调用,下面就列出移植过程,供大家参考。

1、下载UDT4 C++版本,下载android ndk,存放在路径/path/android-ndk-r8b,

       设置系统变量export PATH=$PATH:/path/android-ndk-r8b

2、创建udtforAndroid的jni版本,路径:/path/udt4adr/udtforAndroid/jni,编写Android.mk文件:

LOCAL_PATH := $(call my-dir)
LOCAL_CFLAGS := -DLINUX
LOCAL_CPPFLAGS := -DLINUX
LOCAL_C_INCLUDES := /usr/include/c++/4.5/
LOCAL_CPP_EXTENSION:=.cpp
include $(CLEAR_VARS)
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)

使用NDK-BUILD,生成libudt.so

3、创建udtClient的jni版本:路径:/path/udtClient/jni, 编写Android.mk文件:

LOCAL_PATH := $(call my-dir)
LOCAL_CPP_EXTENSION:=.cpp
include $(CLEAR_VARS)


PATH_TO_UDT_SOURCE:=./include/
PATH_TO_LIBUDT_SO:=/Users/jiangsai2006/Documents/21.99merry/udtClient/jni
LOCAL_C_INCLUDES += $(PATH_TO_UDT_SOURCE)
LOCAL_LDLIBS += -L$(PATH_TO_LIBUDT_SO) -ludt
LOCAL_MODULE    := connect
LOCAL_SRC_FILES := connect.cpp
include $(BUILD_SHARED_LIBRARY)

使用生成libconnect.so


4、将这两个动态库加入到工程里:libs/armeabi/目录下

5、在程序里load动态库,并定义native接口,如下:

       

static {

System.loadLibrary("udt");

System.loadLibrary("connect");

}

public nativeint connect2Server();


6、如果在c++代码中使用了stl,可以定义Application.mk文件,然后加入如下内容:

APP_STL := stlport_static



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值