Android(安卓)串口通讯集成
最近尝试做一做Android环境下的串口通讯,在网上找到了很多的资料。一步一步按照网上的做法进行配置。
如何配置可以参考(https://blog.csdn.net/qq_35952946/article/details/78863871)
我自己也记录下配置步骤,方便以后使用.
1. 需要下载谷歌的开源代码 android_serial_api
下载连接:https://github.com/cepr/android-serialport-api
2. 右击java,新建package,名字为"android_serialport_api", 注意此处,名字必须是这个,写死.
3. 将已下载的源码当中的SerialPort.java、SerialportFinder.java拷贝到android_serialport_api包下
4. 建立jni目录,将源码当中jni目录下的五个文件都拷贝到新建的jni目录下
5. 建立jniLibs目录,将源码中的libs目录下的三个文件夹拷贝到jniLibs目录下。 由于我本地只设置了armeabi-v7a, 我就只拷贝了一个.
6. 在build.grandle(Moudle:app)中添加一句
配置完成,就可以使用了,网上的例子很多,可以参考下(https://blog.csdn.net/qq_35952946/article/details/78863871中的例子)。
我自己使用的测试环境是Android 8.0.
private void initSerialPort() { //获取串口实例 try { mSerialPort = new SerialPort(new File(sPort), iBaudRate, 0); mOutputStream = mSerialPort.getOutputStream(); mInputStream = mSerialPort.getInputStream(); mReadThread = new ReadThread(); mReadThread.start(); } catch (IOException e) { e.printStackTrace(); } }
在测试机运行,执行new SerialPort的时候,提示 libserial_port.so has text relocations.
本人开发无经验,在网上查找原因,说是android_serialport_api和安卓高版本不兼容,网上也有多种解决方法,有些人是降低了build.grandle(Moudle:app)中targetSdkVersion版本,有些人采用了NDK重新编译了so文件。
网络上的说法可参考(https://blog.csdn.net/liufuliang163/article/details/78802901),说的很详细。
由于我使用的Android 8.0,我选择采用了NDK编译so文件。
于是我又在网上去找相关资料, 终于找到了一片文章,讲的很详细。
地址是: https://www.cnblogs.com/Andrew-XinFei/p/5608001.html
学习了该文章,我就尝试重新编译libserial_port.so文件.
1. 添加SDK环境变量:
2. gradle.properties添加
android.useDeprecatedNdk=true
3. 修改Android.mk文件 添加
LOCAL_LDFLAGS += -fPIC
4. 确认local.properties引用了正确的NDK路径,我的路径是
根据个人实际情况进行修改路径
5.打开jni所在目录(右击jni 选择show in explorer),然后进入jni目录(这个jni目录不是源码的目录,是当前app的jni目录,切记!)
6. 打开cmd程序 ,进入到该目录下,输入"ndk-build"进行编译,可以看到编译信息
可以看到main下新生成了一个libs目录(如果该目录存在,应该不会新生成吧),如左边红色箭头所示,目录下分别生成了三种样式的so文件。
上方红色圈圈是从源码拷贝拷贝的so文件,我自己将下方圈圈里的新生成so 拷贝到上方圈圈里,替换原来的 就可以了.
然后我删除了main下的libs目录。程序重新运行起,就不再出现text relocations问题了.
仅供参考.
更多相关文章
- android studio - swiperefreshlayout注意点
- Android(安卓)"java.lang.NoClassDefFoundError:*"报错的处理方
- Android(安卓)Studio下Jni开发配置
- android 学习日记
- Gradle依赖的统一管理
- Android(安卓)文件夹介绍
- Android(安卓)App 性能优化之安装包大小
- Android(安卓)Studio的一些小技巧
- 关于Android(JAVA)实例化接口假象的讨论