Android杂项知识记录
Android启动流程:
init 进程为第一个用户级别的进程,PID 为 1,它通过一系列的初始工作以及解析 init.rc(一个脚本文件)文件构建出 Android 系统运行的初始形态:即其他的 Android 服务进程大多在这个 init.rc 脚本中有描述并按照一定的条件启动。
.rc文件语法:
init.target.rc
这个文件通常是 Systemd 系统中的一个配置文件,Systemd 提供了对系统的启动、进程管理、服务管理、挂载点管理、日志记录等功能的统一管理框架。它采用并行启动服务的方式,能够更快地启动系统,并且提供了更加健壮的系统和服务管理功能。init.target.rc 通常用于定义系统引导时要启动的目标(target),目标类似于传统 init 系统中的运行级别,它定义了一组需要启动的服务和任务。
init.target.rc使用举例:
... ... on charger + chmod 664 /vendor/bin/TEST wait /dev/block/bootdevice/by-name/system mount ext4 /dev/block/bootdevice/by-name/system /system ro barrier=1 setprop sys.usb.configfs 1 ... ... /*定义好服务,该服务以来的可执行文件为/vendor/bin/LEDControl*/ +service TEST /vendor/bin/TEST + class charger/*指定类名,使得服务跟关机充电一起启动,想要开机启动可以改为on boot*/ + user root +
比如想添加一个开机自启动的服务,就可以在init.target.rc中进行操作,并给设备节点进行赋予权限
device-vendor.mk
vendor/qcom/proprietary/common/config/device-vendor.mk 全局的mk文件,表示把文件打包到镜像,不加不会把服务用到的bin文件烧写到板子上
在一个名为 ".mk" 的文件中,例如使用 "PRODUCT_PACKAGES += TEST" 这样的语法通常是针对 Android 系统源代码的编译配置。这行代码的作用是将名为 "LEDControl" 的软件包添加到 Android 系统的编译配置中。
在 Android 源代码的构建过程中,".mk" 文件用于定义各种编译参数和选项,以及指定要包含在最终系统镜像中的软件包和组件。通过在 ".mk" 文件中使用 "PRODUCT_PACKAGES += TEST" 这样的语法,可以将 TEST 软件包包含到最终生成的系统镜像中,使得它可以在设备上正常运行。