问题
Android11设备中添加串口应用,遇到打开串口时报错问题:
System.err: Caused by: java.io.IOException: error=13, Permission denied
解决步骤
- APP中加权限申请
AndroidManifest.xml
- 系统级应用
AndroidManifest.xml添加android.uid.system
这里只介绍system应用配置,如果是普通应用,改法不一样。
- 配置selinux
根据avc的提示来进行修改
type=1400 audit(0.0:1182): avc: denied { read write } for name=“ttyS2” dev=“tmpfs” ino=12037 scontext=u:r:system_app:s0 tcontext=u:object_r:ttyS_device:s0 tclass=chr_file permissive=0
根据avc打印提示修改,不同的平台修改的地方不一样,这里介绍的是mtk平台
device/mediatek/sepolicy/basic/non_plat/system_app.te
# serial port
allow system_app ttyS_device:chr_file { open read write ioctl };
- 设备的权限
由于板子对应mt6771,所以修改
device/mediatek/mt6771/init.mt6771.rc
添加
chmod 0666 /dev/ttyS2
不同型号cpu对应目录不同,且这步要改,否则会出现如下错误
open() fd = -1
Cannot open port
native open returns null
openSerialPort: 打开串口异常:java.io.IOException
作者:帅得不敢出门