android init.rc 的 service
来源:互联网 发布:java面向对象知识点 编辑:程序博客网 时间:2024/05/29 15:47
转自 http://blog.csdn.net/chenyufei1013/article/details/7927923
android的init进程初始化的时候,除了对系统作一些必要的初始化外,就是启动service了。而service是定义在init脚本中的,故很有必要了解一下,init中对service的处理。
class_stop <serviceclass> # 停止所有指定class的服务,后续没法通过class_start启动
class_reset <serviceclass> # 停止服务,后续可以通过class_start启动
restart <servicename> # 重启指定名称的服务,先stop,再start
start <servicename> # 启动指定名称的服务
stop <servicename> # 停止指定名称的服务
- struct service
该数据结构保存了和service相关的信息。service下可以定义option,这些option被保存在这个结构体中;除此之外还保存了service的运行时管理信息,具体如下:
- 解析service节
开始解析service节的函数为parse_service()。该函数的主要功能是:创建service对象,解析定义service的行,然后设置service的默认的class为default。
- 解析service的option
- capability # 暂时未实现
- class <name> # 设置名称为name的类别,感觉有点像开机启动service的优先级,默认的class名称为default
- console # 需要在android屏幕上打开控制台
- disabled # 设置后,不能自动的通过class名称启动,必须显式的通过service名称启动
- ioprio <rt|be|idle> <0-7> # 设置io优先级
- group <groupname> [ <groupname> ]* # 设置服务进程的effective group ID(第一个参数)和supplementary group IDs(第二个到最后)
- keycodes <keycodes> [ <keycodes> ]* # keycodes相关
- oneshot # 服务退出时,不再启动,但可以通过名称启动
- onrestart # 服务重启时,执行的命令,可能是服务的重启的时候,需要作一些额外的工作
- critical # 是device-critical service,在4分钟内退出超过4次,那么设备会重启到recover模式下
- setenv <name> <value> # 设置服务的环境变量
- socket <name> <type> <perm> [ <user> [ <group> ] ] # 为服务创建socket,可以创建多个
- user <effectuserid> # 设置服务进程的effective user ID
- 启动service
service的option会记录在struct service中,故启动service时,考虑到这些选项即可。同时,会记录下service的pid、状态等。
在init进程中,启动service可以有以下的方式:
1.action下面添加和启动服务相关的command即可。action中和操作服务相关的命令有:
class_start <serviceclass> # 启动所有指定class的服务class_stop <serviceclass> # 停止所有指定class的服务,后续没法通过class_start启动
class_reset <serviceclass> # 停止服务,后续可以通过class_start启动
restart <servicename> # 重启指定名称的服务,先stop,再start
start <servicename> # 启动指定名称的服务
stop <servicename> # 停止指定名称的服务
2.restart_processes()函数中。该函数位于init的主线程循环中,用来查看有没有需要重新启动的service。具体参考init.c
3.handle_property_set_fd()函数中。通过向socket名称为property_service的属性服务,发送控制的消息可以进入到该函数中。具体可以参考property_service.c
4.handle_keychord()函数中。该函数和chorded keyboard有关,可参阅相关信息
- init.rc中的service
- ueventd /sbin/ueventd # 处理内核的uevent消息
- console /system/bin/sh # 控制台服务
- adbd /sbin/adbd # adb调试的服务端
- servicemanager /system/bin/servicemanager # 管理服务的服务,被管理的服务通常是供应用程序使用的
- vold /system/bin/vold # 管理存储设备
class main的service包括:
- netd /system/bin/netd # 网络管理器
- debuggerd /system/bin/debuggerd # 可以在logcat中输出调试信息
- ril-deamon /system/bin/rild # 打电话的服务
- surfaceflinger /system/bin/surfacefliger # 合成framebuffer的服务
- zygote /system/bin/app_process # 孵化java应用进程的服务
- drm /system/bin/drmserver # DRM服务,frameworks/base/drm
- media /system/bin/mediaserver # 多媒体服务
- bootanim /system/bin/bootanimation # 开机动画服务
- dbus /system/bin/dbus-daemon # 用于进程间通讯的服务
- bluetoothd /system/bin/bluetoothd # 蓝牙
- installd /system/bin/installd # apk安装的服务
- flash_recovery /system/etc/install-recovery.sh # recover recovery分区
- racoon /system/bin/racoon # key management daemon
- mtpd /system/bin/mtpd # MTP(Media Transfer Protocol) daemon
- keystore /system/bin/keystore # 应用签名
- dumpstate /system/bin/dumpstate # 性能测试工具
- 参考资料
- debuggerd of Android
- Android核心分析 之九-------Zygote Service
- Android 技术专题系列之十一 -- DRM
- Android中Media Framework浅析(二)——MediaServer
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作
- racoon(8) - Linux man page
- KeyStore
- android性能测试工具之dumpstate
- Chorded keyboard
阅读全文
0 0
- android init.rc 的 service
- android init.rc中的service
- android 的init.rc
- Android的init.rc
- Android: 启动init.rc 中service的权限问题
- Android: 启动init.rc 中service的权限问题
- android init.rc增加一个自定义的service
- Android启动流程分析(九) 解析init.rc的service
- Android: 如何调试init.rc中的service
- Android init.rc 的執行順序
- Android init.rc 的生成
- Android init 进程 init.rc init.*.rc
- Android init 进程 init.rc init.*.rc
- Android init 进程 init.rc init.*.rc
- android init.rc中启动的service 默认是disable的,后续如何启动此服务
- android init.rc中启动的service 默认是disable的,后续如何启动此服务
- android init.rc中启动的service 默认是disable的,后续如何启动此服务
- How to make telnetd service in Android's init.rc
- C语言数据结构——树的定义
- iris数据集的可视化
- Oracle存在则更新,不存在则插入应用
- cell操作-matlab
- PHP中数组定义的几种方法
- android init.rc 的 service
- 取出一个数组的最大值
- 121. Best Time to Buy and Sell Stock
- uboot网络验证
- jQuery中的事件与动画
- 575. Distribute Candies
- js正则对于输入框的常用限制
- DOM4j生成xml
- 基于TCP的socket编程