http://bdxnote.blog.163.com/blog/static/844423520127754018855/
1、sh/bash:
#service console /system/bin/sh
service console /system/bin/bash
console
sh和bash服务是控制台服务,其实它是从NetBSD移植过来的,因此它的命令也是比较有限的,不过作为嵌入式系统,使用shell的机会不多.
sh服务的源码位置:system/core/sh;
sh和bash服务使用flex工具生成词法分析代码,使用bison生成语法分析代码.
2、adbd:
#adbd is controlled by the persist.service.adb.enable system property
service adbd /sbin/adbd
disabled
adbd服务的源码位置:system/core/adb;
adbd服务使用c语言实现,它不但可以在虚拟机里运行,也可以在实际的设备里运行.adbd服务是adb调试系统中的一部分,整个adb调试系统包括有三部分:手机运行的adbd服务、PC运行的服务器、PC运行的客户端.当android启动时,就运行adbd服务,创建一个调试端口,这样就可以让开发机器上的服务器连接过来,通过这个连接就可以发送调试信息给服务器,也可以接收到外面发送过来的调试命令.
3、servicemanager:
service servicemanager /system/bin/servicemanager
user system
critical
onrestart restart zygote
onrestart restart media
servicemanager服务的源码位置:frameworks/base/cmds/servicemanager;
servicemanager服务的作用主要是服务管理,所谓的服务管理其实就是获取服务、检查服务、添加服务、枚举所有服务.服务管理器是一个容器管理器,方便服务添加、调用和删除.在应用层的程序,都向这个服务管理器获取需要使用的服务,而所有提供服务的程序,都向这个服务器管理器注册自己的服务.服务管理器是应用程序与服务沟通的桥梁.
4、vold:
service vold /system/bin/vold
socket vold stream 0660 root mount
vold服务的源码位置:system/core/vold;
vold服务的主要作用是负责完成系统的动态卷管理,比如CD-ROM、U盘、MMC卡等外存储的管理.当有这外存储设备插入时,就需要监视这种变化,并加载相应的驱动程序,然后报告给系统和应用程序有新存储设备可以使用.
vold处理过程大致分为三步:
1).创建链接:
在vold作为一个守护进程,一方面接受驱动的信息,并把信息传给应用层;另一方面接受上层的命令并完成相应.所以这里的链接一共有两条:
(1)vold socket: 负责vold与应用层的信息传递;
(2)访问udev的socket: 负责vold与底层的信息传递;
这两个链接都是在进程的一开始完成创建的.
2).引导:
这里主要是在vold启动时,对现有外设存储设备的处理.首先,要加载并解析vold.conf,并检查挂载点是否已经被挂载; 其次,执行MMC卡挂载; 最后,处理USB大容量存储.
3).事件处理:
这里通过对两个链接的监听,完成对动态事件的处理,以及对上层应用操作的响应.
5、nexus:
service nexus /system/bin/nexus
socket nexus stream 0660 root system
disabled
nexus服务的源码位置:system/core/nexus;
nexus服务的主要作用就是监听网络命令,提供网络管理的功能.
6、zygote:
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
socket zygote stream 666
onrestart write /sys/android_power/request_state wake
onrestart write /sys/power/state on
onrestart restart media
zygote服务的源码位置:frameworks/base/cmds/app_process;
zygote服务主要作用就是创建一个服务监听用户的命令,并且根据用户的命令创建应用程序运行.称为Android运行时环境虚拟机;
7、mediaserver:
service media /system/bin/mediaserver
user media
group system audio camera graphics inet net_bt net_bt_admin
mediaserver服务的源码位置:frameworks/base/media/mediaserver
mediaserver服务是多媒体服务的守护进程,负责多媒体/照相机/音频等三项服务.
8、bootanimation:
service bootanim /system/bin/bootanimation
user graphics
group graphics
disabled
oneshot
bootanimation 服务的源码位置:frameworks/base/cmds/bootanimation;
bootanimation服务是开机动画,主要用来加载动画资源.
9、dbus:
service dbus /system/bin/dbus-daemon --system --nofork
socket dbus stream 660 bluetooth bluetooth
user bluetooth
group bluetooth net_bt_admin
dbus服务的源码位置:external/dbus/bus;
dbus服务是android使用的一种特殊的进程间通讯系统.它具有面向对象接口的协议,以及应用程序之间互相发现和监视的守护进程.dbus设计用来作为用户与系统服务之间的分隔以及系统服务之间的通讯.因此,dbus通讯安全,但效率有点差.
10、installd:
service installd /system/bin/installd
socket installd stream 600 system system
installd 服务的源码位置:frameworks/base/cmds/installd
installd服务是提供安装dex文件的服务.
11、keystore:
service keystore /system/bin/keystore /data/misc/keystore
user keystore
group keystore
socket keystore stream 666
keystore服务的源码位置:frameworks/base/cmds/keystore;
keystore服务是加解密储存键值的服务.它主要作用就是验证应用程序与签名文件是否一致.
12、netd:
service netd /system/bin/netd
socket netd stream 0660 root system
netd服务的源码位置:system/netd;
netd服务是Android专用的一个守护进程;主要负责整个系统的网络服务,包括nat、uab tethering、wifi tethering、soft ap设置,还有网络接口的add、remove、change事件的通知;在Framework层,有NetworkManagementService负责与netd服务进行通信;
13、debuggerd:
service debuggerd /system/bin/debuggerd
该服务是配合adb和adbd用于调试用的;