Android-串口(通过jni技术生成自己的so)
【声明:】本文是作者(蘑菇v5)原创,版权归作者 蘑菇v5所有,侵权必究。本文首发在简书。如若转发,请注明作者和来源地址!未经授权,严禁私自转载!
最近在研究物联网这块,扫描机和打印机设备都需要串口与安卓板子(嵌入式设备支持RS232)通信,感觉串口通信在未来智能设备中应用会很广泛,特写此文简略记录一下过程
什么是jni?
- JNI(Java Native Interface):java本地开发接口
- JNI是一个协议,这个协议用来沟通java代码和外部的本地代码(c/c++)
- 外部的c/c++代码也可以调用java代码
简而言之:Java和C/C++相互通信的接口,就好比买卖房子都需要找中介一样,这里的JNI就是Java和C/C++通信的中介,一个中间人
什么是串口?
串口通信偏向嵌入式一点,是Android设备通过串口与其他设备进行通信的一种方式,主要用于数据被逐位按顺序传送的通讯方式称为串口通讯(简单来讲就是按顺序一位一位地传输数据),常见的串口有25针和9针(遵循RS-232标准),串口调试工具
为什么要通过jni生成so?
官方给出的代码是eclipse工程,SDK的版本也比较旧。我们使用的Android Studio,如果直接使用google提供的so库文件是访问不了串口的,因为项目包名并不一致。而且现在市面上几乎所有的Android串口通信库都是用的Google开源封装而成, 但是很多第三方库质量参差不齐,出了问题也不知道是什么原因,因此自己基于官方提供相应的JNI文件来封装.so就显得犹为重要。
现在android studio打包so文件有两种方式,第一种是ndk-build编译项目,还有一种用CMake脚本构建项目,今天主要介绍CMake脚本的编译过程,因为我的开发工具Android Studio是3.2.1的版本,搭建NDK开发环境后,创建的项目就是CMake脚本构建的,所以就研究CMake脚本构建.so把,因为16年的时候,用ndk-build编译过,顺便学习一下CMake脚本构建。
step1:安装NDK和CMake工具

step2:创建项目
流程如下图所示:





step3:修改几处重要的地方







step4:应用so


参考文章:
aar方式
ndk搭建
ndk-build编译项目
ndk搭建和ndk-build编译项目
ndk-build编译串口的so
Android 串口开发
串口通讯学习
android studio 使用CMAKE
Android NDK开发:JNI基础篇