博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓 (二) 怎么添加服务并自启动
阅读量:4285 次
发布时间:2019-05-27

本文共 2751 字,大约阅读时间需要 9 分钟。

  • 安卓环境
PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=8.1.0TARGET_PRODUCT=xxxTARGET_BUILD_VARIANT=userdebugTARGET_BUILD_TYPE=releaseTARGET_ARCH=armTARGET_ARCH_VARIANT=armv7-a-neonTARGET_CPU_VARIANT=cortex-a7HOST_ARCH=x86_64HOST_2ND_ARCH=x86HOST_OS=linuxHOST_OS_EXTRA=Linux-3.13.0-32-generic-x86_64-with-Ubuntu-12.04-preciseHOST_CROSS_OS=windowsHOST_CROSS_ARCH=x86HOST_CROSS_2ND_ARCH=x86_64HOST_BUILD_TYPE=releaseBUILD_ID=OPM1.171019.011
  • 引言
如何 自启动1. 服务的声明及定义2. 服务的启动3. 服务的权限
  • 服务的声明及定义
#data onservice data_on /system/bin/ext_data_on.sh  -u // 可见,  data_on 这个需要设置.    user root        oneshot#data offservice data_off /system/bin/ext_data_off.sh  -d    user root        #for V620 M5 updateservice sky_M5_update /system/bin/sky_m5_update.sh    class main    user root    group root    # SensorHub (Location Hub)service xxx /system/bin/xxx		class main		user gps		group system inet net_raw		ioprio be 0		seclabel u:r:xxx:s0
  • 服务的启动
方式1 我们可以通过 property_set("ctl.start", service_xx); 来启动。proprietories-source/phoneserver/ps_service.c:643:                property_set("ctl.start", "data_on");  //启动服务配置网卡参数proprietories-source/phoneserver/ps_service.c:821:                property_set("ctl.start", "data_off"); //启动清除网卡参数脚本方式2 setprop dev.skym5update.enable=1 去启动sky_M5_update  service 来执行sky_m5_update.shsetprop dev.skym5update.enable=0 来停止 sky_M5_update  serviceon property:dev.skym5update.enable=1    start sky_M5_updateon property:dev.skym5update.enable=0    stop sky_M5_updateon boot	start sky_M5_update  # 在 boot 时 ,就启动-------------------------------- 启动顺序on early-init    ...    start ueventd  //ueventd是init启动的第一个进程    ...on init    ... // 创建各种路径,并写入一些参数on late-init    //trigger 会调用action_for_each_trigger("xxx", action_add_queue_tail);    //从而将xxx section里的操作加入操作队列    // mount文件系统相关的操作    trigger early-fs     trigger fs     trigger post-fs    trigger post-fs-data    trigger load_all_props_action  //加载属性    trigger firmware_mounts_complete    trigger early-boot //将‘early-boot’中的操作加入执行队列    trigger boot  //将‘boot’中的操作加入执行队列on early-boot    ... // kernel trace相关on boot    ...    class_start core // 启动core类别的服务on nonencrypted      class_start main      class_start late_starton property:vold.decrypt=trigger_restart_min_framework      class_start mainon property:vold.decrypt=trigger_restart_framework     class_start main     class_start late_start
  • 服务权限
1. te 文件的编写device/qcom/sepolicy/common/xxx.tetype xxx, domain;type xxx_exec, exec_type,vendor_file_type, file_type;# 在有se 问题的时候仍然可以运行,并将全部se 问题打出permissive lhd; #然后启用这个域init_daemon_domain(xxx)2. 除了se问题 服务权限的添加audit2allow -i selinux_lhd.log > policy.te ; cat policy.te3. se 编译问题 (Neverallow)	system/sepolicy/public/domain.te	https://blog.csdn.net/yxw0609131056/article/details/79784490

never allow

你可能感兴趣的文章
mfc动态按钮
查看>>
vs 获取当前程序文件的路径方法
查看>>
vc 回调函数
查看>>
Marddown学习
查看>>
Mac os中idea使用try catch快捷键
查看>>
无器械健身读后精简
查看>>
狂神说java,html5基础知识讲解全总结
查看>>
Mac idea 替换快捷键
查看>>
CSS3 position sticky固定定位失败的原因
查看>>
狂神说Java CSS3讲解综合代码
查看>>
springboot-mybaits 的mapper文件中使用insert into xx values(xxx) on duplicate key update
查看>>
python-day2 python的基本语法(注释,运算符,数据类型,在python中,定义变量时,不需要指定变量的类型的)
查看>>
Springboot-data-es 自动创建mapping(mapping的数据结构为空)以及自动添加新字段(生成mapping的数据结构)
查看>>
数据分析-day04-pandas-dataFrame中查询数据与修改赋值修改语句(r=df[df["z"]==6] & df["z"]=6)
查看>>
数据分析-day06-pandas-dataFrame案例分析1(方法一):获取title字段中包含物流运输业名称作为分类,统计各个分类的条数
查看>>
数据分析-day06-pandas-dataFrame案例分析1(方法二):获取title字段中包含物流运输业名称作为分类,统计各个分类的条数,
查看>>
数据分析-day06-pandas-dataFrame案例分析4:使用PeriodIndex将离散组成pandas的时间序列,然后统计不同时间段,两个地方的pm值走势
查看>>
static synchronized方法和synchronized方法的区别和联系-2(class锁和对象锁,不同锁,混合访问时)
查看>>
spring cloud 自定义ribbon实现负载均衡(二) 解决自定义ribbon和springboot启动类放在同一包下
查看>>
重要重要》》》》》springcloud fegin的基本使用,实现consumer通过fegin访问provider!!!!!
查看>>