安卓系列教程之ROM系统开发-百问100ask
系统:Android10.0
设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)
init.rc除了可以做开机启动的事情,还可以做行为控制,主要是可以通过action中的属性作为触发事件,这个功能非常有用,可以让我们做一些异步事件的逻辑控制。
属性是可以对系统中的行为进行控制的, 比如某个时候做特定事情, 或者当个条件达成时做某个事情, 而这个时候, android会利用属性来实现这样的功能,我们把这种称作为属性trigger,比如:system/core/rootdir/init.rc
on property:sys.boot_completed=1bootchart stop# Setup per_boot directory so other .rc could start to use it on boot_completedexec - system system -- /bin/rm -rf /data/per_bootmkdir /data/per_boot 0700 system system
意思是当属性sys.boot_completed等于1时,其实就是系统启动完毕后,需要执行bootchart stop, rm, 以及mkdir相关命令
system/core/logcat/logcatd.rc
on property:logd.logpersistd.enable=true && property:logd.logpersistd=logcatd# all exec/services are called with umask(077), so no gain beyond 0700mkdir /data/misc/logd 0700 logd logstart logcatd
意思是当属性logd.logpersistd.enable等于true,并且属性logd.logpersistd等于logcatd时, 就会执行mkdir, start相关命令。
logcat查看的是logd在内存中日志信息,在实际产品中,客户的设备出现问题了, 不一定当场就能马上获取到设备的日志信息,此时可以将日志保存起来,android默认就有logcatd服务,开机就能帮忙保存所有日志。操作如下:
qh100_rk3399:/ $ setprop persist.logd.logpersistd.size 20
qh100_rk3399:/ $ setprop persist.logd.logpersistd.buffer main,system,crash,radio,kernel
qh100_rk3399:/ $ setprop logd.logpersistd logcatd
qh100_rk3399:/ $ setprop logd.logpersistd.enable true
qh100_rk3399:/ $ ps -elf | grep logcatd
logd 2943 1 3 12:10:06 ? 00:00:00 logcatd -L -b main,system,crash,radio,kernel -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 1024 -n 20 --id=QD4A.200805.003
shell 2960 2006 3 12:10:19 pts/0 00:00:00 grep logcatd
/data/misc/logd # su
:/data/misc/logd # ls -l
total 1304
-rw------- 1 logd log 0 2022-03-12 11:52 event-log-tags
-rw------- 1 logd log 247958 2022-12-05 14:40 logcat
-rw------- 1 logd log 1080812 2022-03-12 12:21 logcat.01
-rw------- 1 logd log 15 2022-03-12 12:10 logcat.id
如果开发板重启后,其实logcatd 是没有开机启动的,其实也是可以做配置进行开机启动的。
上一篇:《域渗透攻防指南》签名版预售来啦
下一篇:PyTorch(七)总结