Android 系统如何添加开机自启动 Shell 脚本,Android系统添加开机自启动Shell脚本的方法与步骤

马肤

温馨提示:这篇文章已超过443天没有更新,请注意相关的内容是否还可用!

摘要:在 Android 系统上添加开机自启动 Shell 脚本,可以通过编辑启动脚本或使用任务调度程序实现。具体步骤包括获取 Root 权限,创建 Shell 脚本,将脚本放置在特定目录下,如 "/system/etc/init.d/" 或 "/data/local/init.d/",并设置脚本执行权限。开机时,系统会自动加载并执行这些脚本。此方法可能因不同版本的 Android 系统而有所差异,需要谨慎操作。

Android 系统如何添加开机自启动 Shell 脚本,Android系统添加开机自启动Shell脚本的方法与步骤 第1张

在许多情况下,我们希望在系统启动时执行一些特定的任务,为此,我们可以添加开机自启动的脚本,下面是一个简单的示例:

在device/Jelly/Rice14目录下,添加如下文件和文件夹:

initscript

├── Android.bp

├── initscript.rc

└── initscript.sh

sepolicy

├── device.te

├── file_contexts

├── hello_se.te

└── initscript.te

initscript.sh是一个简单的shell脚本,内容如下:

#!/vendor/bin/sh
echo "this is init script"
log -t initscript "this is initscript!" #记录日志

需要注意的是,该脚本的shebang内容为#!/vendor/bin/sh

initscript.rc的内容如下:

service initscript /vendor/bin/initscript
 class main 
 user root 
 group root system 
 oneshot

class main指明当前服务是系统的基本服务,保证了系统启动时,会启动这个服务。

oneshot表示服务只执行一次。

Android.bp的内容如下:

cc_prebuilt_binary {
 name: "initscript",
 srcs: ["initscript.sh"],
 init_rc: ["initscript.rc"], 
 strip: {
 none: true,
 },
 vendor: true
}

配置SELinux:

initscript.te的内容如下:

type initscript_dt, domain;
type initscript_dt_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(initscript_dt)
domain_auto_trans(shell, initscript_dt_exec, initscript_dt);

在file_contexts中添加如下内容:

/vendor/bin/initscript          u:object_r:initscript_dt_exec:s0

修改device/Jelly/Rice14/Rice14.mk文件:

PRODUCT_PACKAGES += \ helloseandroid \ initscript BOARD_SEPOLICY_DIRS += \ device/Jelly/Rice14/sepolicy接着编译系统并启动模拟器:source build/envsetup.sh lunch Rice14-userdebug make -j16 emulator启动后,查看日志:logcat | grep initscript报错信息提示我们缺少权限,根据错误信息,我们发现在执行/vendor/bin/toybox_vendor时缺少execute_no_trans权限,toybox_vendor是一个命令集合,常用的shell命令都会通过它执行,我们需要在initscript.te中添加相应的权限:allow initscript_dt vendor_toolbox_exec:file { read open execute execute_no_trans };接着再次编译系统并启动模拟器,进入adb shell查看信息,确认添加的脚本已成功执行。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码