Android使用cmake编译串口通信.so文件报错cannot locate symbol "tcgetattr"

582 阅读1分钟

原因

在SerialPort.c的代码中有使用到「tcgetattr」方法

而「tcgetattr」方法存在于「termios.h」头文件中

在api 19 之后的「termios.h」 里面的函数有调整,api版本设置不对会导致在不兼容的android版本下出现这个错误。

我编译.so库时把minSdkVersion设置成21了,在android4.4的工控机上出现了这个错误。

解决办法

只需要将module下的build.gradle文件里的minSdkVersion设置成19或以下,再进行编译,就OK了。

Tips:NDK版本在17以后就不支持armeabi了,所以想要支持到更多的ABI,使用16的NDK版本就好了,