Android添加一个开机完成后执行的脚本

      在调式一个模块驱动的时候加载驱动模块失败,但是在系统起来后可以手动加载成功,因此想到在android  启动完成后通过

执行脚本来加载驱动模块
 1.编写相关的脚本,比如device/softwinner/common/prebuild/tools 在该目录下面, 新建一个脚本文件insmod.sh,在产品.mk文件里面
  将该脚本拷贝到system/bin/目录下面 ,。
: 可以手动执行脚本,确认脚本无误之后加入到系统里面编译
2.在init.rc中创建该服务
编写自己要执行的服务,比如:
service insmod /system/bin/inmod.sh
    user root
    group root
    disabled

3.在init.rc中启动该服务

on property:sys.boot_completed=1
        start insmod

4.在device.mk中修改

将该脚本从编译路径下拷贝到生成系统文件的指定路径下
以上四步完成后,就会在系统启动后去自动执行该服务了,这样就达到了用root权限去执行我们要执行的命令的目的了。

当然,还可以在系统中根据我们的需求用系统启动服务的方式去启动,执行代码为:
SystemService.start("service_xxx");
不过这时候要将 import android.os.SystemService;引入到对应的java文件中,不然编译不过。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个Android RK3588 平台中将 shell 脚本添加到 `/vendor/bin` 目录下,并实现开机自启动的示例,以及对之前的脚本进行了一定的优化。 首先,我们将之前的脚本保存为 `/system/bin/switch_screen.sh` 文件,并赋予可执行权限: ```bash chmod +x /system/bin/switch_screen.sh ``` 然后,我们在 `/vendor/bin` 目录下创建一个名为 `switch_screen` 的符号链接,指向 `/system/bin/switch_screen.sh` 文件: ```bash ln -s /system/bin/switch_screen.sh /vendor/bin/switch_screen ``` 接下来,我们在 `/vendor/etc/init/hw/init.rc` 文件中添加以下内容,实现在系统启动时自动执行 `/vendor/bin/switch_screen` 脚本: ```bash on property:sys.boot_completed=1 start switch_screen ``` 最后,我们在 `/vendor/etc/init/hw/post-init.rc` 文件中添加以下内容,实现在系统启动时自动赋予 `/vendor/bin/switch_screen` 可执行权限: ```bash # Set permissions for switch_screen script chmod 755 /vendor/bin/switch_screen ``` 在这个示例中,我们使用了 `/vendor/bin` 目录来存放自定义的 shell 脚本,并通过修改 `/vendor/etc/init/hw/init.rc` 文件来实现在系统启动时自动执行自定义的 shell 脚本。需要注意的是,不同的 Android 平台可能会有所不同,具体的实现方法可能需要根据实际情况进行调整。 另外,对于之前的脚本,我们进行了一定的优化,具体包括: 1. 使用 `sleep` 命令来降低 CPU 占用率,避免过度消耗系统资源。 2. 使用 `grep` 和 `awk` 命令来解析遥控器的输入事件,提高脚本的可读性和可维护性。 3. 添加了注释,方便你理解每一行代码的作用。 下面是优化后的脚本: ```bash #!/system/bin/sh # 设置主屏幕为默认显示屏幕 setprop sys.display.use_main_screen true # 启动 ConsumerIRService 服务,以便接收遥控器的输入事件 setprop ro.remotecontroller.modules consumerir start consumer_ir_service # 循环监听遥控器的输入事件 while true; do # 读取遥控器的输入事件,并解析出按键码 ir_code=$(getevent -t -c 1 /dev/input/event0 | grep -oP ".*?((?<=KEYCODE_)[A-Z0-9]+).*" | awk '{print $10}') # 如果按键码是 KEYCODE_SWITCH_SCREEN,则切换主副屏幕的显示状态 if [ "$ir_code" = "KEYCODE_SWITCH_SCREEN" ]; then if [ "$(getprop sys.display.use_main_screen)" = "true" ]; then setprop sys.display.use_main_screen false else setprop sys.display.use_main_screen true fi fi # 降低 CPU 占用率,避免过度消耗系统资源 sleep 0.1 done ``` 希望这个示例对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值