android建立NDK项目调用jrtplib与pc机进行通讯

本文介绍了在Android项目中使用NDK集成jrtplib库与Windows进行通讯的过程。首先,编译了适用于Windows和Android的jrtplib库。由于两端网络数据传输存在大小端问题,需修改Android平台的库配置为littleendian。将生成的库文件和头文件放入Android项目的jni目录,并编辑Android.mk。接着,参照jrtplib示例代码编写Android应用。最终,在PC上运行example1.exe,Android设备运行应用,实现跨平台通讯。

按上两次的文章,编译好windows 平台(http://blog.csdn.net/nickwar/article/details/8962344)和android平台上使用的jrtplib库(http://blog.csdn.net/nickwar/article/details/8962482)之后,

就可以做进一步的应用开发了,但测试了一下发现,两边通讯不起来,

查资料发现,网络数据传输有大小端的区别(binendian和littleendian),

这就像是吃煮鸡蛋先从大头磕开还是小头磕开的问题,比较无聊,

但windows平台上编译的配置是默认littleendian的,但android(linux)上配置是默认大端的bigendian

所以,回到android平台编译的那一节,找到jrtplib源码目录下的CMakeLists.txt,打开它,

找到下面这段代码并注释其中相应的的行,重新编译即可获得littleendian的库

if (CMAKE_CROSSCOMPILING)
	# option (JRTPLIB_USE_BIGENDIAN "Target platform is big endian" ON)
	# if (JRTPLIB_USE_BIGENDIAN)
		# set(RTP_ENDIAN "#define RTP_BIG_ENDIAN")
	# else (JRTPLIB_USE_BIGENDIAN)
		set(RTP_ENDIAN "// Little endian system")
	# endif (JRTPLIB_USE_BIGENDIAN)
else (CMAKE_CROSSCOMPILING)
	# test_big_endian(JRTPLIB_BIGENDIAN)
	# if (JRTPLIB_BIGENDIAN)
		# set(RTP_ENDIAN "#define RTP_BIG_ENDIAN")
	# else (JRTPLIB_BIGENDIAN)
		set(RTP_ENDIAN "// Little endian system")
	# endif (JRTPLIB_BIGENDIAN)
endif (CMAKE_CROSSCOMPILING)


创建android ndk项目,

把上一节生成的android运行库libjrtplib.a, libthread和头文件拷到jni目录下,这里我使用的是静态库,

打开Anroid.mk并编辑为如下内容:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE  := jthread
LOCAL_SRC_FILES := libjthread.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE  := jrtplib
LOCAL_SRC_FILES := libjrtplib.a
LOCAL_STATIC_LIBRARIES := jthread
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := HelloJni
LOCAL_SRC_FILES := HelloJni.cpp
LOCAL_STATIC_LIBRARIES := jthread jrtplib
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)


然后参考jrtplib自带的样例,编写android上的代码,不再细说


在pc上运行example1.exe

在android上运行编写好的代码即可


截图:

pc端


android截图



android代码在github上:

https://github.com/F-Sidney/HellojrtplibAndroid.git


评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值