需要实现Android开机后自启动一个进程,进程在普通用户权限下运行出现的问题:
gethostbyname Permission denied
socket Permission denied
open Permission denied
就是调用这几个函数都遇到了权限问题
注:进程执行文件放在 /system/bin 目录下
进程需要在 /cache 目录创建和读写文件
进程是在Android源码下 mm 编译出来的,不是apk程序
进程在板子su root之后执行一切正常
问:应该怎么给进程获取操作设备(连接网络、文件读写)权限,或者如何让进程在Android开机后获取root权限执行
尝试init.rc中启动该程序。
依然不行,可以研究下selinux;selinux我也不熟悉,只能你研究了
如果root的情况下正常,那应该是selinux权限问题了。
在root模式下抓取一份你的进程的启动日志,过滤出关键字"avc: denied "的打印信息,并找出所有和你的进程相关的,然后根据信息配置selinux权限(Android代码库有audit2allow工具也可以协助配置)。
问题解决了,权限已经给了,因为服务是开机的时候启动的,需要等系统beginning of crash之后才能进一步操作,在进程前面加个长休眠就可以了