​​
文章主题

看到有很多小伙伴在问如何添加一个开机脚本,开机执行自定义的命令,这里分享一下个人的调试经验。


1.制作开机脚本

首先要制作一个脚本,可以使用如下方法创建,需要给予脚本可执行权限。

touch startapp.sh //创建脚本
chmod 777 startapp.sh //给予读写执行权限
ls -l startapp.sh

2.编写脚本内容

这一步可以把需要开机执行的命令写入脚本。

#!/bin/sh
sleep 10
uptime >> /data/1.txt
echo "start ability success" >> /data/1.txt

3.内置脚本到系统编译

a. 在源码新建"device/board/hihope/rk3568/startapp"文件夹,把写好的脚本复制进来。

b.新建或者复制其他文件夹里的一个"BUILD.gn"编译模块文件到startapp文件夹里面,修改build.gn文件把startapp.sh加入系统编译。

import("//build/ohos.gni")

ohos_prebuilt_executable("startapp") {
  source = "startapp.sh"
  install_enable = true
  part_name = "rockchip_products"
}

c.修改上层目录的device/board/hihope/rk3568/BUILD.gn文件。

--- a/device/board/hihope/rk3568/BUILD.gn
+++ b/device/board/hihope/rk3568/BUILD.gn
@@ -22,6 +22,7 @@ group("rk3568_group") {
     "kernel:kernel",
     "updater:updater_files",
+    "startapp:startapp",
     "//device/soc/rockchip/rk3568/hardware:hardware_group",

​d.这一步完成可以先编译固件验证一下,编译完成后脚本会内置到开发板系统的system/bin目录里面;

 


如图所示,成功内置了脚本。

4.最后一步,在开机流程里面执行脚本

--- a/foundation/systemabilitymgr/safwk/etc/profile/foundation.cfg
+++ b/foundation/systemabilitymgr/safwk/etc/profile/foundation.cfg
@@ -18,7 +18,8 @@
                 "mkdir /data/service/el1/public/window 0711 foundation foundation",
                 "mkdir /data/service/el1/public/database/common_event_service 02770 foundation ddms",
                 "mkdir /data/service/el1/public/database/auto_startup_service 02770 foundation ddms",
-                "mkdir /data/service/el1/public/database/app_exit_reason 02770 foundation ddms"
+                "mkdir /data/service/el1/public/database/app_exit_reason 02770 foundation ddms",
+                 "exec system/bin/startapp.sh &"

注:如果只是简单的一两句命令,可以直接在此处添加,但是会有写入命令后无法修改,灵活性不好;做成脚本后,可以直接修改脚本来改变开机执行的命令,改完再推入系统,比较方便;

5.结束

好了,今天的分享就到这里,内置脚本亲测可用,感兴趣的小伙伴可以动手试试,也欢迎同学们在评论区提出自己的意见;

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐