从零开始自定义安卓系统(9) 初始化脚本

Published on Jun 4, 2024

Android

网页主要介绍了如何在自定义安卓系统中使用`init.rc`初始化脚本来实现开机自启动自定义脚本的功能,并详细说明了`rc`文件的语法和服务定义方法,以及如何设置触发条件和`selinux`权限。

摘要

本文详细讲解了在自定义安卓系统中实现开机自启动脚本的过程。首先,介绍了init.rc文件的作用,它定义了系统启动时的操作。安卓系统在启动过程中会尝试读取/{system,system_ext,vendor,odm,product}/etc/init/目录下的rc文件,因此可以通过在产品的mk文件中添加相应的PRODUCT_COPY_FILES指令,将自定义的init.bluebird.rcautostart.sh脚本复制到指定目录,以实现开机自启。

接着,文章介绍了rc文件的语法,包括服务定义和触发动作的定义。服务定义包括服务名称、路径、参数、选项等,其中disabled选项禁止服务自启,oneshot选项确保服务只执行一次。触发动作的定义则包括触发条件和执行命令,安卓定义了多个启动阶段的触发器,如early-fsfspost-fs等,同时也可以通过属性方式控制触发,例如dev.bootcomplete属性。

最后,文章提到在使用服务形式时,可能需要修改selinux策略以增加服务的权限,以便进行文件操作等。

观点

  • init.rc是安卓系统启动时的核心初始化脚本,它定义了系统启动时的操作和服务。
  • 通过在产品的mk文件中添加PRODUCT_COPY_FILES指令,可以轻松实现自定义脚本的开机自启。
  • rc文件的语法包括服务定义和触发动作的定义,服务可以设置为disabledoneshot以控制其行为。
  • 安卓系统提供了多个启动阶段的触发器,开发者可以根据需要选择合适的触发时机来执行自定义脚本。
  • 在实际应用中,可能需要调整selinux策略以确保自定义服务具有执行所需操作的权限。
Read Original Article

《Maeiee成长感悟》- 从北漂到准父亲的生活洞察

生活在快速节奏的都市,作为程序员和即将迎来人生新角色的我,经历了无数难忘的瞬间和深刻的思考。这些体验和感悟,我渴望与你分享。

《Maeiee成长感悟》是一个收集我所有重要生活事件和心得的地方。每一篇文章都是对过去经历的反思和对未来生活的展望,真实记录作为一个程序员、副业探索者、终身学习者、一个准爸爸和一个北漂的多重身份之间的平衡与挑战。

这里没有华丽的辞藻,只有最真实的思考和感受,希望它们能触动你的心弦,也许能在你的生活旅程中提供一些启示和慰藉。