从零开始自定义安卓系统(9) 初始化脚本
Published on Jun 4, 2024
网页主要介绍了如何在自定义安卓系统中使用`init.rc`初始化脚本来实现开机自启动自定义脚本的功能,并详细说明了`rc`文件的语法和服务定义方法,以及如何设置触发条件和`selinux`权限。
摘要
本文详细讲解了在自定义安卓系统中实现开机自启动脚本的过程。首先,介绍了init.rc
文件的作用,它定义了系统启动时的操作。安卓系统在启动过程中会尝试读取/{system,system_ext,vendor,odm,product}/etc/init/
目录下的rc
文件,因此可以通过在产品的mk
文件中添加相应的PRODUCT_COPY_FILES
指令,将自定义的init.bluebird.rc
和autostart.sh
脚本复制到指定目录,以实现开机自启。
接着,文章介绍了rc
文件的语法,包括服务定义和触发动作的定义。服务定义包括服务名称、路径、参数、选项等,其中disabled
选项禁止服务自启,oneshot
选项确保服务只执行一次。触发动作的定义则包括触发条件和执行命令,安卓定义了多个启动阶段的触发器,如early-fs
、fs
、post-fs
等,同时也可以通过属性方式控制触发,例如dev.bootcomplete
属性。
最后,文章提到在使用服务形式时,可能需要修改selinux
策略以增加服务的权限,以便进行文件操作等。
观点
init.rc
是安卓系统启动时的核心初始化脚本,它定义了系统启动时的操作和服务。- 通过在产品的
mk
文件中添加PRODUCT_COPY_FILES
指令,可以轻松实现自定义脚本的开机自启。 rc
文件的语法包括服务定义和触发动作的定义,服务可以设置为disabled
和oneshot
以控制其行为。- 安卓系统提供了多个启动阶段的触发器,开发者可以根据需要选择合适的触发时机来执行自定义脚本。
- 在实际应用中,可能需要调整
selinux
策略以确保自定义服务具有执行所需操作的权限。
《Maeiee成长感悟》- 从北漂到准父亲的生活洞察
生活在快速节奏的都市,作为程序员和即将迎来人生新角色的我,经历了无数难忘的瞬间和深刻的思考。这些体验和感悟,我渴望与你分享。
《Maeiee成长感悟》是一个收集我所有重要生活事件和心得的地方。每一篇文章都是对过去经历的反思和对未来生活的展望,真实记录作为一个程序员、副业探索者、终身学习者、一个准爸爸和一个北漂的多重身份之间的平衡与挑战。
这里没有华丽的辞藻,只有最真实的思考和感受,希望它们能触动你的心弦,也许能在你的生活旅程中提供一些启示和慰藉。