Android系统下在te文件中为指定服务添加sepolicy权限
2017-05-04 20:16
302 查看
【正文】
设备在播放视频时有异常,使用Logcat查看日志时发现了如下记录:
从上方的Log中可以看出这个问题是因为mediacodec的sepolicy权限没有添加完善所致。具体的
在任何1个te文件中添加权限都可以,但为了保持格式一致,我最终选择在
重新编译bootimage并烧写到设备上进行测试,问题得到解决。
【注意】
有时添加完一条权限后可能又会报另一种权限缺失,我们只需要按照上述方法再添加这种缺失的权限即可,直到系统不再报告sepolicy权限缺失为止。
【题外话】
前天因为少提交了一个
因为Dolby音效是整合到Android系统的AudioFlinger、NuPlayer、AudioServer等这些系统部件中的,所以当Dolby的权限忘记添加时就会使这些系统部件无法正常工作,从而整个Audio系统也就自然而然地挂掉了。
为Dolby添加好上方这条语句后,音频系统就又可以正常工作了。现在想想,一不小心就搞崩了Android音频系统,也真是刺激。
设备在播放视频时有异常,使用Logcat查看日志时发现了如下记录:
04-27 14:01:59.136 2825 2825 E SELinux : avc: denied { find } for service=display pid=3015 uid=1046 scontext=u:r:mediacodec:s0 tcontext=u:object_r:display_service:s0 tclass=service_manager permissive=0 04-27 14:01:59.136 2825 2825 I auditd : avc: denied { find } for service=display pid=3015 uid=1046 scontext=u:r:mediacodec:s0 tcontext=u:object_r:display_service:s0 tclass=service_manager permissive=0
从上方的Log中可以看出这个问题是因为mediacodec的sepolicy权限没有添加完善所致。具体的
操作权限从Log中可以看到是find权限,
Source上下文是mediacodec,
Target上下文是display_service,
Target类是service_manager。解决方法就是在te文件中为mediacodec添加上缺失的find权限。添加权限的格式为:
allow SourceContext TargetContext:TargetClass Permission;
在任何1个te文件中添加权限都可以,但为了保持格式一致,我最终选择在
device/intel/sepolicy/dolby/mediacodec.te文件中按上述格式添加上以下语句:
allow mediacodec display_service:service_manager find;
重新编译bootimage并烧写到设备上进行测试,问题得到解决。
【注意】
有时添加完一条权限后可能又会报另一种权限缺失,我们只需要按照上述方法再添加这种缺失的权限即可,直到系统不再报告sepolicy权限缺失为止。
【题外话】
前天因为少提交了一个
device/intel/cherrytrail/r2_cht_ffd/目录下的 patch,结果第二天测试组同事为设备烧入
user版本的镜像后发现所有音频相关的功能都无法正常工作了,而且整个系统都非常卡。因为我平时都是使用
eng版本进行测试,没有碰到过这个问题,所以第一反应就是这是权限没有添加成功导致。检查之后发现果然是这样:虽然我在
device/intel/sepolicy/dolby/目录下已经为Dolby音效添加了te文件,但在上文提到的
r2_cht_ffd路径下忘记了在
BoardConfig.mk文件中添加以下代码,所以实际上user版本的镜像中Dolby相关的sepolicy权限配置并没有被编译:
# Add sepolicy dir for Dolby audio BOARD_SEPOLICY_DIRS += device/intel/sepolicy/dolby
因为Dolby音效是整合到Android系统的AudioFlinger、NuPlayer、AudioServer等这些系统部件中的,所以当Dolby的权限忘记添加时就会使这些系统部件无法正常工作,从而整个Audio系统也就自然而然地挂掉了。
为Dolby添加好上方这条语句后,音频系统就又可以正常工作了。现在想想,一不小心就搞崩了Android音频系统,也真是刺激。
相关文章推荐
- 根文件系统中添加telnetd服务
- adb shell下使用命令行删除android系统中指定文件和文件夹
- 安装后新建Android出现“AndroidManifest.xml 系统找不到指定的文件”解决方案
- 安装后新建Android出现“AndroidManifest.xml 系统找不到指定的文件”解决方案
- 如何在Android中添加系统服务
- “未能添加需求的组件。错误是:系统找不到指定的文件”故障解决
- ECShop系统后台添加/修改分类时,指定分类所使用的模板文件!
- 【android】打开文件的Intent及使用,打开系统服务
- Android 添加系统服务
- 如何在android 4.0.3中添加系统服务
- windows 无法启动 windows update 服务 (位于本地计算机上) 错误2:系统找不到指定文件
- adb shell下使用命令行删除android系统中指定文件和文件夹
- “在本地计算机无法启动Server服务,错误2:系统找不到指定的文件”问题
- 举报 根文件系统中添加telnetd服务
- Windows添加系统服务与glassfish bat启动文件
- 用批处理文件添加系统服务
- 根文件系统中添加telnetd服务
- “在本地计算机无法启动Server服务。错误2:系统找不到指定的文件。”
- Android 添加系统服务
- Android 添加系统服务