这是第一篇博客,这几天开发时,需要用到串口通讯,折腾几天后终于搞定,最难解决的是遇到一个问题,当初始化串口时,一直报错java.lang.UnsatisfiedLinkError: Native method not found。。。,百度了N久才找到原因,原来是在调用库文件方法时自己的包名与.so库文件方法名不一直导致,这是库文件方法
这是我的包文件
因为包名与C下的方法名不一致导致的报错
因为使用的是别打包好的.so文件,也是第一次弄这个,一直搞不懂什么原因,就一直调一直找,最后才找到方法解决,方法如下
1.修改C文件后重新打包成.so文件,将C文件下的方法名改成和包名一致,如我的这个,将C文件的方法Java_com_example_x6_serial_SerialPort_open改为Java_qaml_huaibeitapp_SerialPort_open即可。
2.修改包名(不推荐,因为项目包名开发之前定好的),将包名改成与C文件方法名前一致即可,比如如我的,将qaml.huaibeitapp改为com.example.x6.serial即可.或者重新创建一个包com.example.x6也行
注意一下几处,这里的包名的.号就相当于C文件方法名的_号。此处Java_qaml_huaibeitapp_SerialPort_open,SerialPort是你的实现方法的实体类,必须和C文件下的相同,open这是你实现的实体类里面的方法,也要和C文件下的相同。
这样修改之后就完成了。