andriod建立NDK项目调用jrtplib与PC机通讯

来源:互联网 发布:河南 计价软件 编辑:程序博客网 时间:2024/05/18 00:11

按上两次的文章,编译好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的库

[plain] view plaincopyprint?
  1. if (CMAKE_CROSSCOMPILING)  
  2.     # option (JRTPLIB_USE_BIGENDIAN "Target platform is big endian" ON)  
  3.     # if (JRTPLIB_USE_BIGENDIAN)  
  4.         # set(RTP_ENDIAN "#define RTP_BIG_ENDIAN")  
  5.     # else (JRTPLIB_USE_BIGENDIAN)  
  6.         set(RTP_ENDIAN "// Little endian system")  
  7.     # endif (JRTPLIB_USE_BIGENDIAN)  
  8. else (CMAKE_CROSSCOMPILING)  
  9.     # test_big_endian(JRTPLIB_BIGENDIAN)  
  10.     # if (JRTPLIB_BIGENDIAN)  
  11.         # set(RTP_ENDIAN "#define RTP_BIG_ENDIAN")  
  12.     # else (JRTPLIB_BIGENDIAN)  
  13.         set(RTP_ENDIAN "// Little endian system")  
  14.     # endif (JRTPLIB_BIGENDIAN)  
  15. endif (CMAKE_CROSSCOMPILING)  


创建android ndk项目,

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

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

[plain] view plaincopyprint?
  1. LOCAL_PATH := $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4. LOCAL_MODULE  := jthread  
  5. LOCAL_SRC_FILES := libjthread.a  
  6. include $(PREBUILT_STATIC_LIBRARY)  
  7.   
  8. include $(CLEAR_VARS)  
  9. LOCAL_MODULE  := jrtplib  
  10. LOCAL_SRC_FILES := libjrtplib.a  
  11. LOCAL_STATIC_LIBRARIES := jthread  
  12. include $(PREBUILT_STATIC_LIBRARY)  
  13.   
  14. include $(CLEAR_VARS)  
  15. LOCAL_MODULE    := HelloJni  
  16. LOCAL_SRC_FILES := HelloJni.cpp  
  17. LOCAL_STATIC_LIBRARIES := jthread jrtplib  
  18. LOCAL_LDLIBS := -llog  
  19. include $(BUILD_SHARED_LIBRARY)  


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


在pc上运行example1.exe

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


截图:

pc端


android截图



android代码在github上:

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