Android使用cmake編譯串列埠通訊.so檔案報錯cannot locate symbol "tcgetattr"

AIll發表於2018-09-28

原因

在SerialPort.c的程式碼中有使用到「tcgetattr」方法

Android使用cmake編譯串列埠通訊.so檔案報錯cannot locate symbol "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版本就好了,

Android使用cmake編譯串列埠通訊.so檔案報錯cannot locate symbol "tcgetattr"

相關文章