Android 开机启动shell脚本

接到一个集成功能的需求,然后看了一下是由上层应用 + linux进程实现的功能,需要增加开机自动启动linux进程,没弄过有点懵。

这个不怎么正确,仅供参考,在权限那块需要更改,放到system下

环境
  1. android 9.0
  2. mtk 平台
实现思路

因为集成的功能只是demo状态,对应的功能提供公司只提供的是三个apk,5个动态库(*.so),一个linux可执行程序和一个可执行程序的配置文件。

在linux可执行程序执行之前,这个功能还需要设置一个环境变量,尝试了几种方式,改变文件放置位置、权限,但是最终还是失败告终。有点沮丧了,重新分析一次,决定要用shell实现设置环境变量,接着执行linux可执行程序,最终是这种方式实现了。

实现
1. 编写shell

通过shell脚本实现设置环境变量,再启动目标linux进程
shell文件/system/bin/acr/startacr.sh

#!/system/bin/sh
#因为这个linux可执行程序需要在可写目录执行,需要在对应目录写入记录文件,所以这里切换到可写的data目录
cd /data/
#因为需要,先设置环境变量
export LD_LIBRARY_PATH=/mnt/vendor/linux_rootfs/lib:/system/bin/acr
#执行linux程序
/system/bin/acr/alacr
在RK3568上开机启动shell脚本的方法如下所示: 1. 首先,在系统的init.rc文件中添加以下内容: ``` service myshell /system/bin/myshell.sh user root group root disabled on property:sys.boot_completed=1 start myshell ``` 这段代码会启动一个名为myshell的服务,并在系统启动完成后执行`/system/bin/myshell.sh`脚本。 2. 然后,创建一个名为myshell.te的文件,将其放置在`device/rockchip/common/sepolicy`目录下,并添加以下内容: ``` type myshell, domain; type myshell_exec, exec_type, file_type; init_daemon_domain(myshell) allow myshell init_tmpfs:file create_file_perms; allow myshell self:capability { dac_override net_admin net_raw setgid setuid }; allow myshell device:dir { open read }; allow myshell shell:lnk_file { read }; allow myshell rootfs:lnk_file { getattr }; allow myshell socket_device:sock_file { write }; allow myshell shell_exec:file { getattr read}; allow myshell fuse:dir { search write add_name getattr}; allow myshell fuse:file { create write open getattr}; allow myshell system_file:file { execute_no_trans}; ``` 这段代码是为了授权myshell脚本执行所需的功能和权限。 通过以上步骤,你可以在RK3568上实现开机启动shell脚本的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Android系统10 RK3399 init进程启动(四十四) 实战Android开机启动脚本](https://blog.youkuaiyun.com/ldswfun/article/details/128279000)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [RK3399 Android 添加开机启动shell脚本](https://blog.youkuaiyun.com/weixin_41720013/article/details/120034087)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值