当前位置: 首页 > article >正文

解决一个android service启动无法开文件的问题

问题描述

android hal层一般是通过service给系统提供服务的。一般需要将service配置为开机启动。调试阶段,我直接将service push到板卡上,进行调试,未出现问题无法开的问题。在最后集成完成后,放到板卡上,出现启动无法打开 /dev/uinput 的问题,报错为:

10-14 08:21:02.550   360   360 E ca_ins_hal: open /dev/uinput failed: Permission denied

提示为权限问题。但是系统并没有报 avc: denied 的问题。avc 相关的已经在集成时,解决了所有的 avc 报错。但是现在无法打开 /dev/uinput

猜测 te 文件添加的权限已经没有问题了。还有与权限相关的就是 rc 文件了。

android.hardware.gnss@2.1-service-ca_ins.rc :

service gnss-hal-service /vendor/bin/hw/android.hardware.gnss@2.1-service-ca_ins
	class hal
	user system
	group system

解决

这里我抄了一个demo的 rc 配置,使用的 class 是 hal,user 和 group 都是system,android 系统中只有root权限和非root权限。因此猜测在这里使用root权限可以解决上述问题。因此在系统里找了一个使用 root 权限的配置copy过来:

service gnss-hal-service /vendor/bin/hw/android.hardware.gnss@2.1-service-ca_ins
	class main
	user root
	group root

重新编译集成,再次启动, /dev/uinput 打开正常。接下来报除了一些 uinput 相关的 avc 权限问题,将需要的权限添加到 te 文件中即可,可能需要多次调试添加。

在解决权限问题时,最后会有一条无法解决:

10-14 08:52:08.847   475   475 I gnss@2.1-servic: type=1400 audit(0.0:7): avc: denied { dac_override } for capability=1 scontext=u:r:hal_gnss_ca_ins:s0 tcontext=u:r:hal_gnss_ca_ins:s0 tclass=capability permissive=1

将相应的权限添加到 te 文件会导致编译不通过。自己定义的权限和全局设置的权限要求冲突了。

解决方式参考:https://blog.csdn.net/k663514387/article/details/107983037

需要将进程添加到需要访问的文件所在的文件组:

dev/uinput:

se1000:/ # ls /dev/uinput  -al
crw-rw---- 1 uhid uhid 10, 223 1970-01-01 00:00 /dev/uinput

te 文件:

service gnss-hal-service /vendor/bin/hw/android.hardware.gnss@2.1-service-ca_ins
	class hal
	user system
	group system uhid

重新编译集成,不会在报 dac_override avc 错误。并且, /dev/uinput 也能正常打开。root 权限不可乱用 : (


http://www.kler.cn/news/356671.html

相关文章:

  • 总结:SQL查询变慢,常见原因分析!
  • HarmonyOS 应用级状态管理(LocalStorage、AppStorage、PersistentStorage)
  • 美​团​一​面​-​3​​宁​德​时​代​一​面
  • MySQL-20.多表设计-一对一多对多
  • 【windows】win10提示‘adb‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
  • 视频美颜SDK与直播平台的融合:实现实时美颜的技术方案详解
  • Golang Map简介
  • JAVA毕业设计190—基于Java+Springboot+vue的景区旅游推荐管理系统(源代码+数据库+7000字论文)
  • MySQL 创建数据库
  • 三、MyBatis实践:提高持久层数据处理效率(1)(包含mybatis下载官网)
  • 【Qt】Qt界面美化 | 绘画
  • TikTok账号策略:IP和网络环境的要求分析
  • 【into outfile写文件】
  • FLINK内存管理解析,taskmanager、jobmanager
  • Vue 3.0新增setup的作用
  • 在各大媒体报纸上刊登自己的文章用什么投稿方法发表快?
  • Java 引用数据类型详解、字符串的不可变性、如何处理字符串的内存管理、String Pool 及其优化
  • 2013 lost connection to MySQL server during query
  • 【Linux】 Linux 释放内存脚本
  • MacOS安装MySQL和Navicat