在android studio下使用android-serialport-api (2017年)

本文介绍了在Android Studio下使用android-serialport-api时遇到的‘tcgetattr’函数引用错误导致应用闪退的问题。错误源于API 19与23及以上版本中函数定义的变化。作者提供了两种解决方案:一是将`compileSdkVersion`和`targetSdkVersion`降至19,但这会影响界面美观;二是直接修改android-serialport-api源码,使其兼容高版本SDK。
摘要由CSDN通过智能技术生成

关于android studio下使用android-serialport-api。


首先,为什么注明2017年,我是今年才开始做android的,用的sdk和ndk都是最新版的。

然而,我在网上找的不管是代码还是帖子,用前辈们教我们的方法,使用android-serialport-api都是运行到open的时候闪退。

如果你也发现是这样,那么就阅读我这篇文章吧,如果你还没到这一步,先看jni技术上的问题和android-serialport-api的使用方法吧。

我另一个文章会介绍使用。

 

当你是个新手,也就是说你用比较新的sdkndk时,当你调用到打开串口时,会发现程序闪退;

闪退的原因是so库的问题,用android studio Debug,你会发现

cannot locate symbol "tcgetattr" referenced by "libserial_port.so"这个问题;

原因是tcgetattr这个函数在compileSdkVersion 19时,和某一个版本(compileSdkVersion 23)之后,函数已经改变了。

 

这个函数或者定义出现在termios.h中,19里是内联,23里是定义。

Api23时,int tcgetattr(int, struct termios*);

Api19时,static __inline__ int tcgetattr(int fd, struct termios *s){

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值