所有 Android Init Language 'triggers' 的列表是什么?
What is the list of all Android Init Language 'triggers'?
在 /init.rc 和其他 Android Init Language '.rc' 文件中,可以有 'actions' 部分开始: 'on ' 执行一系列当 init 进程中发生事件时发出命令。所有 'triggers' 的列表是什么?似乎看到了一些特定的关键字触发器,例如 'boot'、'init'、'fs'、'early-init' 和 'post-fs-data'。这是这些的完整列表吗?在某处的代码中? (除了关键字触发器,还有一些表达式触发器,见下文。)
我见过一些关键字触发器,如果知道何时以及为何调用它们会很高兴:
boot
early-init
init
fs
post-fs-data
charger
nonencrypted
除了关键字,表达式的例子还包括:
property:ro.factory.tool=1 -- when a property is set to a value
device-added-<path> -- Triggered when a node is added when the equipment
device-removed-<path> -- When the device is removed to add nodes
service-exited-<name>
注意:在撰写本文时,所有链接都指向 AOSP android-5.1.1_r18
触发器可以由开发者(设备维护者)定义,所以我们不能指望找到一个完整的列表。但是,假设您对默认包含在 AOSP 中的那些最感兴趣,流程如下:
在 platform/system/core/init/init.c 中通过 action_for_each_trigger()
处理的操作:
early-init
init
charger
或 late-init
如果charger
是最后遇到的触发器,那么这是AOSP定义列表的结尾。厂商可以从这里补充offmode充电的后续动作。
如果 late-init
是遇到的最后一个触发器,则 Android (platform/system/core/rootdir/init.rc) 中包含的默认 init.rc 会启动 运行 以下触发器:
# Mount filesystems and start core system services.
on late-init
trigger early-fs
trigger fs
trigger post-fs
trigger post-fs-data
# Load properties from /system/ + /factory after fs mount. Place
# this in another action so that the load will be scheduled after the prior
# issued fs triggers have completed.
trigger load_all_props_action
# Remove a file to wake up anything waiting for firmware.
trigger firmware_mounts_complete
trigger early-boot
trigger boot
您也可以使用 adb 在连接的 phone/模拟器上列出它:
$ adb shell dmesg | grep "processing action"
[ 4.376074] init: processing action 0x35480 (init)
[ 4.440537] init: processing action 0x38c58 (init)
[ 4.450009] init: processing action 0x35708 (early-fs)
[ 5.531812] init: processing action 0x39c38 (console_init)
[ 5.575831] init: processing action 0x2de70 (fs)
[ 5.597799] init: processing action 0x35890 (fs)
[ 7.089157] init: processing action 0x2df58 (post-fs)
[ 7.091550] init: processing action 0x38cb8 (post-fs)
[ 7.091818] init: processing action 0x2e288 (post-fs-data)
[ 7.100189] init: processing action 0x39c80 (property_service_init)
[ 7.110080] init: processing action 0x39cc8 (signal_init)
[ 7.110177] init: processing action 0x39d10 (check_startup)
[ 7.110248] init: processing action 0x2ea18 (boot)
[ 7.126205] init: processing action 0x397e0 (boot)
[ 8.183090] init: processing action 0x39d58 (queue_property_triggers)
[ 8.183232] init: processing action 0x2f8f8 (nonencrypted)
[ 8.183810] init: processing action 0x2fd98 (property:ro.debuggable=1)
[ 8.184463] init: processing action 0x328f8 (property:sys.usb.config=none)
[ 14.438626] init: processing action 0x2ffd0 (property:sys.sensors=1)
[ 28.192393] init: processing action 0x31860 (property:sys.boot_completed=1)
有几个关键字是每个人都知道的,但如果您想查看正在设置的属性列表(以及其他默认设置的属性),请尝试此 adb 命令:
$ adb shell getprop
[alsa.mixer.capture.headset]: [Capture]
[alsa.mixer.capture.master]: [Capture]
[alsa.mixer.playback.headset]: [Headphone]
[alsa.mixer.playback.master]: [Playback]
[alsa.mixer.playback.speaker]: [Playback]
[back_camera_name]: [ov5640_mipi]
[back_camera_orient]: [0]
[camera.disable_zsl_mode]: [1]
[dalvik.vm.dexopt-flags]: [m=y]
[dalvik.vm.heapgrowthlimit]: [64m]
[dalvik.vm.heapmaxfree]: [8m]
[dalvik.vm.heapminfree]: [512k]
[dalvik.vm.heapsize]: [384m]
[dalvik.vm.heapstartsize]: [8m]
[dalvik.vm.heaptargetutilization]: [0.75]
[dalvik.vm.jniopts]: [warnonly]
[dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]
[debug.egl.hw]: [1]
[debug.force_rtl]: [0]
[debug.sf.enable_hgl]: [1]
[debug.sf.showfps]: [0]
[dev.bootcomplete]: [1]
[dhcp.eth0.result]: [failed]
[front_camera_name]: [ov5642_camera,ov5640_camera]
[front_camera_orient]: [0]
[gsm.current.phone-type]: [1]
[gsm.network.type]: [Unknown]
[gsm.operator.alpha]: []
[gsm.operator.iso-country]: []
[gsm.operator.isroaming]: [false]
[gsm.operator.numeric]: []
[gsm.ril.delay]: [15]
[gsm.sim.state]: [NOT_READY]
[hwc.enable_dither]: [1]
[hwc.stretch.filter]: [1]
[init.svc.adbd]: [running]
[init.svc.bootanim]: [stopped]
[init.svc.console]: [running]
[init.svc.debuggerd]: [running]
[init.svc.dhcpcd_eth0]: [stopped]
[init.svc.drm]: [running]
[init.svc.fuse_extsd]: [running]
[init.svc.healthd]: [running]
[init.svc.installd]: [running]
[init.svc.keystore]: [running]
[init.svc.media]: [running]
[init.svc.netd]: [running]
[init.svc.sdcard]: [running]
[init.svc.servicemanager]: [running]
[init.svc.surfaceflinger]: [running]
[init.svc.ueventd]: [running]
[init.svc.uim]: [stopped]
[init.svc.vold]: [running]
[init.svc.wifi_mac]: [stopped]
[init.svc.zygote]: [running]
[media.omxgm.enable-player]: [1]
[media.omxgm.enable-record]: [1]
[media.omxgm.enable-scan]: [1]
[net.bt.name]: [Android]
[net.change]: [net.qtaguid_enabled]
[net.hostname]: [android-c49d34ff0fbd9f6]
[net.qtaguid_enabled]: [1]
[net.tcp.buffersize.default]: [4096,87380,110208,4096,16384,110208]
[net.tcp.buffersize.edge]: [4093,26280,35040,4096,16384,35040]
[net.tcp.buffersize.ethernet]: [524288,2097152,4194304,524288,2097152,4194304]
[net.tcp.buffersize.evdo]: [4094,87380,262144,4096,16384,262144]
[net.tcp.buffersize.gprs]: [4092,8760,11680,4096,8760,11680]
[net.tcp.buffersize.hsdpa]: [4094,87380,262144,4096,16384,262144]
[net.tcp.buffersize.hspa]: [4094,87380,262144,4096,16384,262144]
[net.tcp.buffersize.hspap]: [4094,87380,1220608,4096,16384,1220608]
[net.tcp.buffersize.hsupa]: [4094,87380,262144,4096,16384,262144]
[net.tcp.buffersize.lte]: [524288,1048576,2097152,262144,524288,1048576]
[net.tcp.buffersize.umts]: [4094,87380,110208,4096,16384,110208]
[net.tcp.buffersize.wifi]: [524288,1048576,2097152,262144,524288,1048576]
[persist.service.bdroid.bdaddr]: [22:22:12:0c:fb:0d]
[persist.sys.dalvik.vm.lib]: [libdvm.so]
[persist.sys.profiler_ms]: [0]
[persist.sys.usb.config]: [mtp,adb]
[qemu.hw.mainkeys]: [1]
[ro.FSL_AAC_PARSER]: [1]
[ro.FSL_ASF_PARSER]: [0]
[ro.FSL_AVI_PARSER]: [1]
[ro.FSL_FLAC_PARSER]: [1]
[ro.FSL_FLV_PARSER]: [1]
[ro.FSL_MKV_PARSER]: [1]
[ro.FSL_MPG2_PARSER]: [1]
[ro.FSL_REAL_PARSER]: [0]
[ro.adb.secure]: [1]
[ro.allow.mock.location]: [1]
[ro.baseband]: [unknown]
[ro.board.platform]: [imx6]
[ro.boot.bootdev]: [mmcblk3]
[ro.boot.hardware]: [freescale]
[ro.boot.serialno]: [19b80271c6]
[ro.bootloader]: [unknown]
[ro.bootmode]: [unknown]
[ro.build.characteristics]: [tablet]
[ro.build.date.utc]: [1484264053]
[ro.build.date]: [Thu Jan 12 17:34:13 CST 2017]
[ro.build.description]: [nitrogen6x-eng 4.4.3 2.0.1-ga 20160816 dev-keys]
[ro.build.display.id]: [nitrogen6x-eng 4.4.3 2.0.1-ga 20160816 dev-keys]
[ro.build.fingerprint]: [boundary/nitrogen6x/nitrogen6x:4.4.3/2.0.1-ga/20160816:eng/dev-keys]
[ro.build.host]: [fbd-HP-ZBook-15]
[ro.build.id]: [2.0.1-ga]
[ro.build.product]: [nitrogen6x]
[ro.build.tags]: [dev-keys]
[ro.build.type]: [eng]
[ro.build.user]: [fbd]
[ro.build.version.codename]: [REL]
[ro.build.version.incremental]: [20160816]
[ro.build.version.release]: [4.4.3]
[ro.build.version.sdk]: [19]
[ro.carrier]: [unknown]
[ro.config.alarm_alert]: [Alarm_Classic.ogg]
[ro.config.notification_sound]: [OnTheHunt.ogg]
[ro.crypto.state]: [unencrypted]
[ro.debuggable]: [1]
[ro.factorytest]: [0]
[ro.hardware]: [freescale]
[ro.kernel.android.checkjni]: [1]
[ro.opengles.version]: [196608]
[ro.product.board]: []
[ro.product.brand]: [boundary]
[ro.product.cpu.abi2]: [armeabi]
[ro.product.cpu.abi]: [armeabi-v7a]
[ro.product.device]: [nitrogen6x]
[ro.product.locale.language]: [en]
[ro.product.locale.region]: [US]
[ro.product.manufacturer]: [boundary]
[ro.product.model]: [NITROGEN6X]
[ro.product.name]: [nitrogen6x]
[ro.revision]: [405522]
[ro.ril.wake_lock_timeout]: [300]
[ro.runtime.firstboot]: [582594834]
[ro.secure]: [0]
[ro.serialno]: [19b80271c6]
[ro.sf.hwrotation]: [0]
[ro.sf.lcd_density]: [160]
[ro.tether.denied]: [false]
[ro.wifi.channels]: []
[ro.zygote.disable_gl_preload]: [true]
[rw.VIDEO_RENDER_NAME]: [video_render.surface]
[service.bootanim.exit]: [1]
[sys.boot_completed]: [1]
[sys.emulated.battery]: [1]
[sys.interactive]: [active]
[sys.sysctl.extra_free_kbytes]: [12000]
[sys.usb.config]: [mtp,adb]
[sys.usb.state]: [mtp,adb]
[system_init.startsurfaceflinger]: [0]
[vold.post_fs_data_done]: [1]
[wifi.ap.interface]: [wlan0]
[wifi.interface]: [wlan0]
[wlan.interface]: [wlan0]
我在 Boundary Devices 的 Sabrelite 开发板上 运行 Android 4.4.2。有关详细信息,请参阅 link 获取 getprop adb 命令 here. See this blog。
我知道这已经晚了,但如果有人仍然面临这个问题,我决定回答它。
早期初始化-
设置 init 及其分叉子项的 oom_adj
为所有 init 进程设置安全上下文。
在初始化时-
设置全局环境
创建挂载点
在 fs-
挂载 mtd 分区
在 post-fs-
更改系统目录的权限
在 post-fs-data-
更改 /data 文件夹和子文件夹的权限
开机时 -
基本网络初始化,内存管理
服务服务经理
启动系统管理器来管理所有本机服务,如位置、音频、共享首选项等。
服务受精卵-
以 app_process
启动 zygote
以上信息来源http://www.onsandroid.com/2014/10/in-depth-android-boot-sequence-process.html
找到所有这些标准触发器的最有效方法是对 system/core/rootdir
directory.[=14 中的所有 *.rc
文件执行单词 "trigger" 的 grep =]
grep trigger rootdir/*
请参阅 AOSP 代码的 system/core/init 文件夹中的自述文件。您可以在此处找到有关 android init 的所有详细信息。
Link for Android O OS 自述文件:http://androidxref.com/8.0.0_r4/xref/system/core/init/README.md
在 /init.rc 和其他 Android Init Language '.rc' 文件中,可以有 'actions' 部分开始: 'on ' 执行一系列当 init 进程中发生事件时发出命令。所有 'triggers' 的列表是什么?似乎看到了一些特定的关键字触发器,例如 'boot'、'init'、'fs'、'early-init' 和 'post-fs-data'。这是这些的完整列表吗?在某处的代码中? (除了关键字触发器,还有一些表达式触发器,见下文。)
我见过一些关键字触发器,如果知道何时以及为何调用它们会很高兴:
boot
early-init
init
fs
post-fs-data
charger
nonencrypted
除了关键字,表达式的例子还包括:
property:ro.factory.tool=1 -- when a property is set to a value
device-added-<path> -- Triggered when a node is added when the equipment
device-removed-<path> -- When the device is removed to add nodes
service-exited-<name>
注意:在撰写本文时,所有链接都指向 AOSP android-5.1.1_r18
触发器可以由开发者(设备维护者)定义,所以我们不能指望找到一个完整的列表。但是,假设您对默认包含在 AOSP 中的那些最感兴趣,流程如下:
在 platform/system/core/init/init.c 中通过 action_for_each_trigger()
处理的操作:
early-init
init
charger
或late-init
如果charger
是最后遇到的触发器,那么这是AOSP定义列表的结尾。厂商可以从这里补充offmode充电的后续动作。
如果 late-init
是遇到的最后一个触发器,则 Android (platform/system/core/rootdir/init.rc) 中包含的默认 init.rc 会启动 运行 以下触发器:
# Mount filesystems and start core system services.
on late-init
trigger early-fs
trigger fs
trigger post-fs
trigger post-fs-data
# Load properties from /system/ + /factory after fs mount. Place
# this in another action so that the load will be scheduled after the prior
# issued fs triggers have completed.
trigger load_all_props_action
# Remove a file to wake up anything waiting for firmware.
trigger firmware_mounts_complete
trigger early-boot
trigger boot
您也可以使用 adb 在连接的 phone/模拟器上列出它:
$ adb shell dmesg | grep "processing action"
[ 4.376074] init: processing action 0x35480 (init)
[ 4.440537] init: processing action 0x38c58 (init)
[ 4.450009] init: processing action 0x35708 (early-fs)
[ 5.531812] init: processing action 0x39c38 (console_init)
[ 5.575831] init: processing action 0x2de70 (fs)
[ 5.597799] init: processing action 0x35890 (fs)
[ 7.089157] init: processing action 0x2df58 (post-fs)
[ 7.091550] init: processing action 0x38cb8 (post-fs)
[ 7.091818] init: processing action 0x2e288 (post-fs-data)
[ 7.100189] init: processing action 0x39c80 (property_service_init)
[ 7.110080] init: processing action 0x39cc8 (signal_init)
[ 7.110177] init: processing action 0x39d10 (check_startup)
[ 7.110248] init: processing action 0x2ea18 (boot)
[ 7.126205] init: processing action 0x397e0 (boot)
[ 8.183090] init: processing action 0x39d58 (queue_property_triggers)
[ 8.183232] init: processing action 0x2f8f8 (nonencrypted)
[ 8.183810] init: processing action 0x2fd98 (property:ro.debuggable=1)
[ 8.184463] init: processing action 0x328f8 (property:sys.usb.config=none)
[ 14.438626] init: processing action 0x2ffd0 (property:sys.sensors=1)
[ 28.192393] init: processing action 0x31860 (property:sys.boot_completed=1)
有几个关键字是每个人都知道的,但如果您想查看正在设置的属性列表(以及其他默认设置的属性),请尝试此 adb 命令:
$ adb shell getprop
[alsa.mixer.capture.headset]: [Capture]
[alsa.mixer.capture.master]: [Capture]
[alsa.mixer.playback.headset]: [Headphone]
[alsa.mixer.playback.master]: [Playback]
[alsa.mixer.playback.speaker]: [Playback]
[back_camera_name]: [ov5640_mipi]
[back_camera_orient]: [0]
[camera.disable_zsl_mode]: [1]
[dalvik.vm.dexopt-flags]: [m=y]
[dalvik.vm.heapgrowthlimit]: [64m]
[dalvik.vm.heapmaxfree]: [8m]
[dalvik.vm.heapminfree]: [512k]
[dalvik.vm.heapsize]: [384m]
[dalvik.vm.heapstartsize]: [8m]
[dalvik.vm.heaptargetutilization]: [0.75]
[dalvik.vm.jniopts]: [warnonly]
[dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]
[debug.egl.hw]: [1]
[debug.force_rtl]: [0]
[debug.sf.enable_hgl]: [1]
[debug.sf.showfps]: [0]
[dev.bootcomplete]: [1]
[dhcp.eth0.result]: [failed]
[front_camera_name]: [ov5642_camera,ov5640_camera]
[front_camera_orient]: [0]
[gsm.current.phone-type]: [1]
[gsm.network.type]: [Unknown]
[gsm.operator.alpha]: []
[gsm.operator.iso-country]: []
[gsm.operator.isroaming]: [false]
[gsm.operator.numeric]: []
[gsm.ril.delay]: [15]
[gsm.sim.state]: [NOT_READY]
[hwc.enable_dither]: [1]
[hwc.stretch.filter]: [1]
[init.svc.adbd]: [running]
[init.svc.bootanim]: [stopped]
[init.svc.console]: [running]
[init.svc.debuggerd]: [running]
[init.svc.dhcpcd_eth0]: [stopped]
[init.svc.drm]: [running]
[init.svc.fuse_extsd]: [running]
[init.svc.healthd]: [running]
[init.svc.installd]: [running]
[init.svc.keystore]: [running]
[init.svc.media]: [running]
[init.svc.netd]: [running]
[init.svc.sdcard]: [running]
[init.svc.servicemanager]: [running]
[init.svc.surfaceflinger]: [running]
[init.svc.ueventd]: [running]
[init.svc.uim]: [stopped]
[init.svc.vold]: [running]
[init.svc.wifi_mac]: [stopped]
[init.svc.zygote]: [running]
[media.omxgm.enable-player]: [1]
[media.omxgm.enable-record]: [1]
[media.omxgm.enable-scan]: [1]
[net.bt.name]: [Android]
[net.change]: [net.qtaguid_enabled]
[net.hostname]: [android-c49d34ff0fbd9f6]
[net.qtaguid_enabled]: [1]
[net.tcp.buffersize.default]: [4096,87380,110208,4096,16384,110208]
[net.tcp.buffersize.edge]: [4093,26280,35040,4096,16384,35040]
[net.tcp.buffersize.ethernet]: [524288,2097152,4194304,524288,2097152,4194304]
[net.tcp.buffersize.evdo]: [4094,87380,262144,4096,16384,262144]
[net.tcp.buffersize.gprs]: [4092,8760,11680,4096,8760,11680]
[net.tcp.buffersize.hsdpa]: [4094,87380,262144,4096,16384,262144]
[net.tcp.buffersize.hspa]: [4094,87380,262144,4096,16384,262144]
[net.tcp.buffersize.hspap]: [4094,87380,1220608,4096,16384,1220608]
[net.tcp.buffersize.hsupa]: [4094,87380,262144,4096,16384,262144]
[net.tcp.buffersize.lte]: [524288,1048576,2097152,262144,524288,1048576]
[net.tcp.buffersize.umts]: [4094,87380,110208,4096,16384,110208]
[net.tcp.buffersize.wifi]: [524288,1048576,2097152,262144,524288,1048576]
[persist.service.bdroid.bdaddr]: [22:22:12:0c:fb:0d]
[persist.sys.dalvik.vm.lib]: [libdvm.so]
[persist.sys.profiler_ms]: [0]
[persist.sys.usb.config]: [mtp,adb]
[qemu.hw.mainkeys]: [1]
[ro.FSL_AAC_PARSER]: [1]
[ro.FSL_ASF_PARSER]: [0]
[ro.FSL_AVI_PARSER]: [1]
[ro.FSL_FLAC_PARSER]: [1]
[ro.FSL_FLV_PARSER]: [1]
[ro.FSL_MKV_PARSER]: [1]
[ro.FSL_MPG2_PARSER]: [1]
[ro.FSL_REAL_PARSER]: [0]
[ro.adb.secure]: [1]
[ro.allow.mock.location]: [1]
[ro.baseband]: [unknown]
[ro.board.platform]: [imx6]
[ro.boot.bootdev]: [mmcblk3]
[ro.boot.hardware]: [freescale]
[ro.boot.serialno]: [19b80271c6]
[ro.bootloader]: [unknown]
[ro.bootmode]: [unknown]
[ro.build.characteristics]: [tablet]
[ro.build.date.utc]: [1484264053]
[ro.build.date]: [Thu Jan 12 17:34:13 CST 2017]
[ro.build.description]: [nitrogen6x-eng 4.4.3 2.0.1-ga 20160816 dev-keys]
[ro.build.display.id]: [nitrogen6x-eng 4.4.3 2.0.1-ga 20160816 dev-keys]
[ro.build.fingerprint]: [boundary/nitrogen6x/nitrogen6x:4.4.3/2.0.1-ga/20160816:eng/dev-keys]
[ro.build.host]: [fbd-HP-ZBook-15]
[ro.build.id]: [2.0.1-ga]
[ro.build.product]: [nitrogen6x]
[ro.build.tags]: [dev-keys]
[ro.build.type]: [eng]
[ro.build.user]: [fbd]
[ro.build.version.codename]: [REL]
[ro.build.version.incremental]: [20160816]
[ro.build.version.release]: [4.4.3]
[ro.build.version.sdk]: [19]
[ro.carrier]: [unknown]
[ro.config.alarm_alert]: [Alarm_Classic.ogg]
[ro.config.notification_sound]: [OnTheHunt.ogg]
[ro.crypto.state]: [unencrypted]
[ro.debuggable]: [1]
[ro.factorytest]: [0]
[ro.hardware]: [freescale]
[ro.kernel.android.checkjni]: [1]
[ro.opengles.version]: [196608]
[ro.product.board]: []
[ro.product.brand]: [boundary]
[ro.product.cpu.abi2]: [armeabi]
[ro.product.cpu.abi]: [armeabi-v7a]
[ro.product.device]: [nitrogen6x]
[ro.product.locale.language]: [en]
[ro.product.locale.region]: [US]
[ro.product.manufacturer]: [boundary]
[ro.product.model]: [NITROGEN6X]
[ro.product.name]: [nitrogen6x]
[ro.revision]: [405522]
[ro.ril.wake_lock_timeout]: [300]
[ro.runtime.firstboot]: [582594834]
[ro.secure]: [0]
[ro.serialno]: [19b80271c6]
[ro.sf.hwrotation]: [0]
[ro.sf.lcd_density]: [160]
[ro.tether.denied]: [false]
[ro.wifi.channels]: []
[ro.zygote.disable_gl_preload]: [true]
[rw.VIDEO_RENDER_NAME]: [video_render.surface]
[service.bootanim.exit]: [1]
[sys.boot_completed]: [1]
[sys.emulated.battery]: [1]
[sys.interactive]: [active]
[sys.sysctl.extra_free_kbytes]: [12000]
[sys.usb.config]: [mtp,adb]
[sys.usb.state]: [mtp,adb]
[system_init.startsurfaceflinger]: [0]
[vold.post_fs_data_done]: [1]
[wifi.ap.interface]: [wlan0]
[wifi.interface]: [wlan0]
[wlan.interface]: [wlan0]
我在 Boundary Devices 的 Sabrelite 开发板上 运行 Android 4.4.2。有关详细信息,请参阅 link 获取 getprop adb 命令 here. See this blog。
我知道这已经晚了,但如果有人仍然面临这个问题,我决定回答它。 早期初始化- 设置 init 及其分叉子项的 oom_adj 为所有 init 进程设置安全上下文。 在初始化时- 设置全局环境 创建挂载点 在 fs- 挂载 mtd 分区 在 post-fs- 更改系统目录的权限 在 post-fs-data- 更改 /data 文件夹和子文件夹的权限 开机时 - 基本网络初始化,内存管理 服务服务经理 启动系统管理器来管理所有本机服务,如位置、音频、共享首选项等。 服务受精卵- 以 app_process
启动 zygote以上信息来源http://www.onsandroid.com/2014/10/in-depth-android-boot-sequence-process.html
找到所有这些标准触发器的最有效方法是对 system/core/rootdir
directory.[=14 中的所有 *.rc
文件执行单词 "trigger" 的 grep =]
grep trigger rootdir/*
请参阅 AOSP 代码的 system/core/init 文件夹中的自述文件。您可以在此处找到有关 android init 的所有详细信息。
Link for Android O OS 自述文件:http://androidxref.com/8.0.0_r4/xref/system/core/init/README.md