首页
最新活动
服务器租用
香港服务器租用
台湾服务器租用
美国服务器租用
日本服务器租用
新加坡服务器租用
高防服务器
香港高防服务器
台湾高防服务器
美国高防服务器
裸金属
香港裸金属服务器
台湾裸金属服务器
美国裸金属服务器
日本裸金属服务器
新加坡裸金属服务器
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
CDN
CDN节点
CDN带宽
CDN防御
CDN定制
行业新闻
官方公告
香港服务器资讯
帮助文档
wp博客
zb博客
服务器资讯
联系我们
关于我们
机房介绍
机房托管
登入
注册
帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
联系客服
服务器资讯
/
香港服务器租用
/
香港VPS租用
/
香港云服务器
/
美国服务器租用
/
台湾服务器租用
/
日本服务器租用
/
官方公告
/
帮助文档
安卓系统开机运行shell脚本
发布时间:2024-03-07 10:58:10 分类:帮助文档
安卓系统开机运行shell脚本 在安卓系统上很多业务需求是通过shell脚本实现的,开机自启动一般做法是创建安卓service服务,然后通过该服务调用执行shell脚本。详细步骤: 1、编辑shell脚本 如下shell脚本功能为:循环查询系统下是否有厂商ID为0x1A86的USB转串口设备匹配到了CDC-ACM驱动上,若是则解绑USB设备和CDC-ACM驱动的绑定,并重新绑定到厂商的CH343SER串口驱动上。 #! /bin/sh usbpath="" usbnode="" usbdevpath='/sys/bus/usb/devices/' usbdriverpath='/sys/bus/usb/drivers/' while [ true ] do for file in /sys/bus/usb/drivers/cdc_acm/* do if [ -d "$file" ] then usbpath=${file*/} usbpath=${usbpath%:*} idVendor=$usbdevpath$usbpath'/idVendor' if [ ! -f "$idVendor" ] then continue fi if [[ $(cat $idVendor) == "1a86" ]] then usbnode=${file*/} echo $usbnode > /sys/bus/usb/drivers/cdc_acm/unbind echo $usbnode > /sys/bus/usb/drivers/usb_ch343/bind fi fi done sleep 1 done 2、修改device.mk文件 在该文件中增加,实现将脚本文件编译时拷贝到系统。shell脚本文件的系统路径:/vendor/bin/ch343check.sh PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/ch343check.sh:$(TARGET_COPY_OUT_VENDOR)/bin/ch343check.sh \ 3、修改init.xxx.rc文件 在系统启动rc文件中新增service服务,如下所示: #Add shell scripts for ch343 service service ch343check /vendor/bin/sh /vendor/bin/ch343check.sh class main user root group root service声明格式:service [服务名称] [执行的shell命令] 注:部分平台上必须使用"sh + shell"脚本名称的方式声明,否则可能不工作。"class main" 声明方式可实现开机自动执行,并不需要在 on property:sys.boot_completed=1 后面添加 "start ch343check" 4、查看并设置selinux权限 查看运行此服务所需要的selinux权限,可通过“start 服务名”,查看logcat确定权限。 adb shell "dmesg | grep avc" > avc_log.txt 如下所示: [ 232.117640 ] type=1400 audit(1682072440.187:512):avc: denied { write } for comm="sh" name="unbind" dev="sysfs" ino=38155 scontext=u:r:vendor_qti_init_shell:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0 其中 permissive=0 说明缺乏某项权限。 根据如上权限问题,修改qcom下selinux的sepolicy目录下的,file_contents和init_shell.te文件 file_contents文件新增: /(vendor|system/vendor)/bin/ch343check\.sh u:object_r:vendor_qti_init_shell_exec:s0 根据te文件规则 allow scontext tcontext : tclass permission 在te文件后面增加对应的权限。 init_shell.te文件新增: allow vendor_qti_init_shell sysfs:file { write }; 注:可以选择创建新的te文件(系统常规会遍历文件夹下的所有te文件),也可以在原有的te文件中新增内容。 编译到系统后,查看文件或进程是否有此新增权限,可使用 “ls -Z filepath” 和 “ps -ef -Z” 命令。 /vendor/bin/ch343check.sh u:object_r:vendor_qti_init_shell_exec:s0 # ps -ef -Z | grep ch343 u:r:vendor_qti_init_shell:s0 root 1250 1 0 14:02:55 ? 00:00:00 sh /vendor/bin/ch343check.sh 5、解决neverallow冲突 当修改te文件后进行系统编译时,可能会遇到安卓系统编译问题。原因是新增的allow规则与全局的neverallow有冲突,举例: [2023-04-22T11:40:58.529Z] neverallow check failed at out/soong/.intermediates/system/sepolicy/recovery_sepolicy.cil/android_common/recovery_sepolicy.cil:11224 from system/sepolicy/public/domain.te:507 [2023-04-22T11:40:58.529Z] (neverallow domain vendor_file_type (file (write create setattr relabelfrom append unlink link rename))) [2023-04-22T11:40:58.529Z]
[2023-04-22T11:40:58.529Z] allow at out/soong/.intermediates/system/sepolicy/recovery_sepolicy.cil/android_common/recovery_sepolicy.cil:40813 [2023-04-22T11:40:58.529Z] (allow shell vendor_file (file (read write getattr execute open execute_no_trans))) [2023-04-22T11:40:58.529Z] [2023-04-22T11:40:58.529Z] Failed to generate binary [2023-04-22T11:40:58.529Z] Failed to build policydb 此问题,直接修改报错文件 domain.te,然后在出错行号的 neverallow 定义中使用 "-xxx" 来排除对此权限的not allow。 修改前: neverallow { domain } vendor_file_type (file (write create setattr relabelfrom append unlink link rename)) 修改后: neverallow { domain -shell } vendor_file_type (file (write create setattr relabelfrom append unlink link rename)) 除此之外,domain.te 会与系统的其他 apixx/domain.te 文件进行比对,此内容必须完全匹配。建议直接复制替换即可。 至此,安卓系统通过服务实现开机自动运行shell脚本完成。
上一篇
个人租用云服务器多少钱
下一篇
香港网络是哪家公司
相关文章
CH579以太网转串口功能的使用方法和串口服务器的编程技巧
服务器挂机赚钱之Traffmonetizer教程挂机,利用闲置的Vps赚钱
阿里云备案怎么换域名
开源大规模分布式MQTT消息服务器EMQX部署教程
大学校进宿迁移动怎么样
深入了解服务器 CPU 的型号、代际、片内与片间互联架构
服务器2u和1u怎么区分
北京天域教育怎么报名
如果我有一台服务器的话
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价
7*24H在线售后
高可用资源,安全稳定
1v1专属客服对接
无忧退款试用保障
德讯电讯股份有限公司
电话:00886-982-263-666
台湾总部:台北市中山区建国北路一段29号3楼
香港分公司:九龙弥敦道625号雅兰商业二期906室
服务器租用
香港服务器
日本服务器
台湾服务器
美国服务器
高防服务器购买
香港高防服务器出租
台湾高防服务器租赁
美国高防服务器DDos
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
行业新闻
香港服务器租用
服务器资讯
香港云服务器
台湾服务器租用
zblog博客
香港VPS
关于我们
机房介绍
联系我们
Copyright © 1997-2024 www.hkstack.com All rights reserved.