在Android中,我们可以调用Unix的动态连接库(.so扩展名文件)来集成串口通信,这种调用的方式称为JNI(Java Native Interface,即Java本地接口)。
Google安卓官方已经提供了android-serialport-api 官方API(源码链接),项目的具体结构如下:

jni中存放了JNI调用的C/C++文件。
libs存放了.so文件,是由C/C++编译而来的。
src中的SerialPort.java和SerialPortFinder.java是提供Java开发的类。
但是这个API(实际上是so依赖库)是十年前的,只兼容安卓6.0及以下版本的系统,所以需要更换更新的so依赖库(云盘链接:https://pan.baidu.com/s/1acjlvSxto0tOvubYjWqOFQ
提取码:ltl6 )。
引入完API后需要做的就是配置app/build.gradle,设置.so文件的路径,配置完路径后就可以实现提供的开发类进行串口通讯了。
android {
...
}
sourceSets.main {
jniLibs.srcDir 'libs'
}
}
在这里需要注意的是,.so中函数声明涉及到的package name和class name可能与调用它的package name和class name不符,需要改变工程中的package name和class name,使其与.so文件中函数签名提示的一致,否则Android会调用JNI出错 :java.lang.UnsatisfiedLinkError: No implementation found for。
参考:https://juejin.cn/post/6844903606982967303
这篇博客介绍了如何在Android中使用JNI调用Unix动态连接库进行串口通信,重点关注了如何处理旧版API(android-serialport-api)仅兼容Android 6.0及以下版本的问题。作者提供了新的.so依赖库链接,并指导了如何配置app/build.gradle以适配新库。在使用过程中,需要注意.so文件中函数签名与Java包名和类名的匹配,否则会导致JNI调用错误。
756

被折叠的 条评论
为什么被折叠?



