问题:Android 6.0安装第三方apk时,选择安装路径为SD卡,安装失败
关键log
Binder_4: type=1400 audit(0.0:84): avc: denied { ioctl } for path="socket:[39582]" dev="sockfs" ino=39582 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:syst em_server:s0 tclass=unix_stream_socket permissive=0
因为抓取的log里面有很多内容(我保存的log名称为packageinstall6.log)
在linux下,结合工具
$grep "avc" packageinstall6.log > test11.log
$audit2allow -i test11.log
#============= surfaceflinger ==============
allow surfaceflinger self:unix_stream_socket ioctl;
#============= system_server ==============
allow system_server self:unix_stream_socket ioctl;
#============= vold ==============
allow vold vold_tmpfs:file create;
发现surfaceflinger和system_server权限都是有的,只有vold权限没有,并且跟读写文件有关。
打开vold对应的权限策略文件Android 根目录下external/sepolicy/vold.te,把缺少的权限加进去,问题解决
参考文章:http://blog.csdn.net/aihua53/article/details/51198652