通过property_set("ctl.start", service_xx);
来启动init.rc中的service是一个很方便方法来调用某个可执行程序或某个脚本程序
service service_xx/system/bin/xx
disabled
oneshot
但在非AID_ROOT、AID_SYSTEM 用户的进程中调用ctl.start ctl.stop会碰到权限问题:
system/core/init/property_service.c
只有uid == AID_SYSTEM || uid == AID_ROOT
或符合 control_perms[] = {
{ "dumpstate",AID_SHELL, AID_LOG },
{NULL, 0, 0 }
}; 的uid进程才有权限star/stop services
因此,如果我们碰到了权限问题,根据log提示,在/system/core/include/private/android_filesystem_config.h
中查到进程定义,添加到control_perms[]列表
比如,uid ==AID_WIFI的某个程序需要权限启动service_xx
control_perms[] = {
{ "dumpstate",AID_SHELL, AID_LOG },
+ { "service_xx",AID_WIFI, AID_WIFI},
{NULL, 0, 0 }
};
分享到:
相关推荐
Android Init Language是android系统很重要的组成 文件来自于\system\core\rootdir 里面有init.rc,init.usb.rc,init.zygote64.rc,init-debug.rc,ueventd.rc
android启动过程中的init.c源码注释,init.rc语法分析
把init.rc切换usb模式用脚本替换, 避免特殊需求对代码修改风险. 附件是展讯7731平台切换到的mtp模式的实现,pid,vid等可以改. 格式为: adb shell ./mtp.sh & #也可以把第一行屏蔽,然后执行./mtp.sh
Android启动脚本init.rc, 可以在系统的初始化过程中进行一些简单的初始化操作
Android的初始化语言脚本init.rc解析
Android init.rc 启动流程图 1.ZygoteInit是如何启动的以及如何启动SystemService 2.ActivityManagerService如何通过Zygote来创建Activity Pid 3.命令如何启动Pm.java
Android init.rc文件详解 详细解析init.rc文件
init.rc 在data创建文件夹和节点的正确方法
android的init.rc文件的语法
对Android init.rc 脚本的语法进行说明
linux系统初始化脚本init.rc的语法介绍.pdf
Android-init.rc文件解析过程详解.docx
Android init.rc文件简单介绍 init.rc脚本是由Android中linux的...也就是说,android启动后,会将init.rc文件装载到内存。而修改init.rc文件的内容实际上只是修改内存中的init.rc文件的内容。一旦重启android,init.rc
Android脚本init.rc中写service,应用中启动该service
这个是android源码中的一个文件,不过个人认为,只要是想学习android initrc文件的人,看这个文件足够了。
Android的初始化语言脚本init.rc解析.pdf
NULL 博文链接:https://folksy.iteye.com/blog/1093567
“/etc/rc.d/init.d/目录下的脚本就类似与windows中的注册表,在系统启动的时候某些指定脚本将被执行”。开始之前,先引用李善明经理昨天晚上总结时的一个理解,让大家先对init.d目录有个大概的印象。在进入init.d...
高通LA.1.1基线Android源码的ServiceManager启动流程图 和 高通LA.1.1基线android源码的zygote流程图,可配套作者相关文章进行分析
对init.rc的解析是在parse_config(): [system/core/init/init_parser.c]中进行的。解析发生在init全过程中的哪个阶段,参看《Android init进程启动过程分析》。一、解析过程1. 扫描init.rc中的token 找到其中的 ...