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

Posted leo21sun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于recovery 升级过程执行自定义shell命令的主要内容,如果未能解决你的问题,请参考以下文章

如何打包安卓手机Zip升级包?如何签名?不换Recovery,用官方Recovery

Android recovery支持adb shell

Android recovery支持adb shell

Linux Shell脚本的执行过程

linux 如何自定义命令函数?

关于安卓固件升级的问