所有的Android Init语言“触发器”列表是什么?

在/init.rc和其他Android Init语言的“.rc”文件中,可以有一些“动作”部分开始:“on”,以便在init进程中发生事件时执行一系列命令。 什么是所有“触发器”的列表? 似乎看到一些特定的关键字触发器,如'boot','init','fs','early-init'和'post-fs-data'。 这是这些的完整列表吗? 在代码的地方? (除了关键字触发器之外,还有一些expression式触发器,参见下文。)

我见过的一些关键字触发器,知道何时以及为什么被调用是很好的。

boot early-init init fs post-fs-data charger nonencrypted 

除了关键字之外,expression式的例子包括:

 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> 

Solutions Collecting From Web of "所有的Android Init语言“触发器”列表是什么?"

您也可以使用adb在真实手机上列出:

 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) 

注意:在撰写本文时,所有链接都指向AOSP android-5.1.1_r18

触发器可以由开发者(设备维护者)定义,所以我们不能希望find一个完整的列表。 但是,假设您对默认情况下包含在AOSP中的那些人最感兴趣,下面是stream程:

在platform / system / core / init / init.c中通过action_for_each_trigger()

  1. early-init
  2. init
  3. charger late-init

如果charger是遇到的最后一个触发器,那么这是AOSP定义列表的结尾。 制造商可以从这里补充后续充电的操作。

如果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命令:

 $ 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。 请参阅此处的getprop adb命令的链接。 看到这个博客的更多信息。

我知道这是晚了,但如果有人仍然面临这个问题,我决定回答。 早期初始化设置初始化及其分叉的subprocessoom_adj为所有init进程设置安全上下文。 在init上设置全局环境在fs上挂载mtd分区在fs上挂载mtd分区在post -fs-data上更改系统目录的权限在启动时更改/ data文件夹和子文件夹的权限基本networkinginit,内存pipe理服务servicemanager启动系统pipe理器来pipe理所有本地服务,如位置,audio,共享首选项等。zygote-启动zygote作为app_process

上述信息的来源是http://www.onsandroid.com/2014/10/in-depth-android-boot-sequence-process.html

find所有这些标准触发器的最有效方法是在system/core/rootdir目录中的所有*.rc文件中对“触发”一词执行grep。

 grep trigger rootdir/*