web-dev-qa-db-ja.com

すべてのAndroid Init Language 'トリガー'のリストは何ですか?

/init.rcおよびその他のAndroid Init Language'.rc 'ファイルには、次のように開始する' actions 'セクションがあります。'on'で、イベントが発生したときに一連のコマンドを実行します。 initプロセス。すべての「トリガー」のリストは何ですか?「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>
12
Ribo

また、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)
16
pevik

注:この記事の執筆時点では、すべてのリンクはAOSP Android-5.1.1_r18を指しています。

トリガーは開発者(デバイスメンテナー)が定義できるため、completeリストを見つけることはできません。ただし、デフォルトでAOSPに含まれているものに最も関心があると仮定すると、フローは次のようになります。

platform/system/core/init/init.caction_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
11
MDMower

これらの標準トリガーをすべて見つける最も効果的な方法は、 *.rcディレクトリ 内のすべてのsystem/core/rootdirファイルでWord「トリガー」のgrepを実行することです。

grep trigger rootdir/*
1
RubberDuck

誰もが知っているキーワードがいくつかありますが、設定されているプロパティ(およびデフォルトで設定されている他のプロパティ)のリストを表示したい場合は、次の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]

私はAndroid 4.4.2を境界デバイスのSabreliteボードで実行しています。getpropadbコマンドのリンクを参照してください ここ 。これを参照してください ブログ 詳細については。

1
Eric Reyna

これが遅いことは知っていますが、誰かがまだ問題に直面している場合に備えて、私はそれに答えることにしました。 初期初期化時-initとそのフォークされた子のoom_adjを設定しますすべての初期化プロセスのセキュリティコンテキストを設定します。 on init-グローバル環境をセットアップしますfsにマウントポイントを作成します-post-にmtdパーティションをマウントしますfs-post-fs-dataのシステムディレクトリの権限を変更します-起動時に/ dataフォルダとサブフォルダの権限を変更します-基本的なネットワーク初期化、メモリ管理サービスservicemanagerシステムマネージャーを起動して、場所、オーディオ、共有設定などのすべてのネイティブサービスを管理します service zygote-app_processとしてzygoteを開始します

上記の情報のソースは http://www.onsandroid.com/2014/10/in-depth-Android-boot-sequence-process.html

0
Aaditya Gupta