recovery 升级过程执行自定义shell命令

  有时候我们需要,在升级的过程中,执行一些shell命令,来完成我们的一些需求,利用升级过程,进行一些特殊化的操作,思路如下:

 

第一:

    把我们需要执行的命令,写成一个test.sh脚本,然后在recovery串口环境下,source test.sh,保证我们的sh能够正常运行。

 

第二:

    把test.sh打包到升级包update.zip的根目录中去,主要是修改build/core/Makefile以及build/tools/releasetools/ota_from_target_files.

        

 

第三:

    修改升级脚本updater-script,增加执行test.sh的脚本函数,主要是修改build/tools/releasetools/ota_from_target_files,在生成的脚本中增加如下函数:

 

package_extract_file("test.sh","/tmp/test.sh")    //提取test.sh到tmp目录
set_perm/set_metadata                             //设置test.sh权限
run_program("/tmp/test.sh");                      //执行sh
delete("/tmp/test.sh"):                           //删除test.sh

 

 

    注意:set_permandroid L之后去掉了,只能使用set_metadata了。

 

第四:

 

    如果在升级执行过程,提示了selinux相关的权限,则需要增加recovery相关的selinux的权限

 

    至此,我们的功能即增加完成,升recovery升级的过程,会提取升级包update.zip中的test.sh/tmp目录,然后赋予test.sh可执行的权限,然后执行test.sh,最后删除/tmp/test.sh

posted @ 2019-01-30 16:26  leo21sun  阅读(1150)  评论(0编辑  收藏  举报