做好的串口通信功能在低版本安卓系统可以正常运行,在6.0系统就会报错"Detected problems with app native libraries (please consult log for detail) : libserial_port.so: text relocations",最简单的办法是修改targetSdkVersion<23,当然了这个办法还是不够好,因为现在版本都是30或者更高。所以选择第二种办法打包出来兼容高版本的so文件。
第一步:先下载谷歌的开源代码android_serial_api,链接为https://github.com/cepr/android-serialport-api
第二步:新建一个项目SerialPortTest
第三步:新建一个package,名字为”android_serialport_api
第四步:将下载的源码当中的SerialPort.java和SerialPortFinder.java拷贝到android_serialport_api包下
第五步:建立jni目录,将源码当中jni目录下的五个文件都拷贝到新建的jni目录下
第六步:建立jniLibs目录,将源码中的libs目录下的三个文件夹拷贝到jniLibs目录下。
第七步:在build..gradle里面添加一段代码
第八步:添加SDK环境变量
第九步:gradle.properties添加 android.useDeprecatedNdk=true
第十步:修改Android.mk文件,添加 LOCAL_LDFLAGS += -fPIC
第十一步:确认local.properties引用了正确的NDK路径
第十二步:打开jni所在目录(右击jni 选择show in explorer),然后进入jni目录
第十三步:打开cmd程序 ,进入到该目录下,输入"ndk-build"进行编译
libs目录下面自动生成新的so文件,这个so文件就可以用于工作的项目
这个so文件就可以用于工作的项目 这样以来就可以在安卓4.4版本、5.1版本、6.0版本 7.1版本里面正常运行。