Android 服务名称规则invalid service name 限制16字符以内
今天调试网络服务的时候为了区分,修改了原有服务名称,同时新增了两个服务。
系统运行的时候报错找不到对应的服务
init: no such service 'wpa_supplicant_common'
cat init.rc文件,查看对应的服务是否存在对应的rc文件。
# wifi service
# wifi sta service
service wpa_supplicant_common /system/bin/wpa_supplicant p2p_supported=false \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-I/system/etc/wifi/wpa_supplicant_overlay.conf \
-O/data/misc/wifi/sockets -e/data/misc/wifi/entropy.bin
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot # wifi sta p2p concurrent service
service p2p_supplicant_common /system/bin/wpa_supplicant p2p_supported=true \
-ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
-e/data/misc/wifi/entropy.bin -N \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-I/system/etc/wifi/wpa_supplicant_overlay.conf \
-O/data/misc/wifi/sockets
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot # for rtl wifi
service p2p_supplicant_rtl /system/bin/wpa_supplicant \
-ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf -e/data/misc/wifi/entropy.bin -N \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf
class main
socket wpa_wlan0 dgram 660 wifi wifi
group wifi inet
disabled
oneshot service wpa_supplicant_rtl /system/bin/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-e/data/misc/wifi/entropy.bin
class main
socket wpa_wlan0 dgram 660 wifi wifi
group wifi inet
disabled
oneshot
确认服务是已经添加到了对应的文件。
手动启动服务再测试一下,同样显示找不到对应的服务。
setprop ctl.start wpa_supplicant_common
[ 126.046251] init: no such service 'wpa_supplicant_common'
dolphin-fvd-p1:/ # setprop ctl.start wpa_supplicant_rtl
[ 136.016232] init: no such service 'wpa_supplicant_rtl'
.589306] init: no such service 'wpa_supplicant_common'
查看系统开机的init log,提示无效的服务名。
[ 1.816434] init: /init.sun8iw7p1.rc: 291: invalid service name 'wpa_supplicant_common'
[ 1.825430] init: /init.sun8iw7p1.rc: 304: invalid service name 'p2p_supplicant_common'
[ 1.834409] init: /init.sun8iw7p1.rc: 313: invalid service name 'p2p_supplicant_rtl'
[ 1.843091] init: /init.sun8iw7p1.rc: 322: invalid service name 'wpa_supplicant_rtl'
原本的服务名是
wpa_supplicant
p2p_supplicant
但是为了适应不同的wifi模块所以新加后缀方便区分。
查看init源码,检查服务名称invalid的判定规则。
bool ServiceParser::ParseSection(const std::vector<std::string>& args,
789 std::string* err) {
790 if (args.size() < 3) {
791 *err = "services must have a name and a program";
792 return false;
793 }
794
795 const std::string& name = args[1];
796 if (!IsValidName(name)) {
797 *err = StringPrintf("invalid service name '%s'", name.c_str());
798 return false;
799 }
800
801 std::vector<std::string> str_args(args.begin() + 2, args.end());
802 service_ = std::make_unique<Service>(name, "default", str_args);
803 return true;
804 } bool ServiceParser::IsValidName(const std::string& name) const {
819 if (name.size() > 16) {
820 return false;
821 }
822 for (const auto& c : name) {
823 if (!isalnum(c) && (c != '_') && (c != '-')) {
824 return false;
825 }
826 }
827 return true;
828 }
从上可以看出android的服务名称限制如下:
1、必须小于等于16个字符。
2、只允许数字、字母及下划线、中划线。
查看修改后的服务名称明显都超出了16个字符,所以只需要服务名称再16个字符内即可。
[ 1.816434] init: /init.sun8iw7p1.rc: 291: invalid service name 'wpa_supplicant_common'
[ 1.825430] init: /init.sun8iw7p1.rc: 304: invalid service name 'p2p_supplicant_common'
[ 1.834409] init: /init.sun8iw7p1.rc: 313: invalid service name 'p2p_supplicant_rtl'
[ 1.843091] init: /init.sun8iw7p1.rc: 322: invalid service name 'wpa_supplicant_rtl'
重新修改后名称如下,验证已解决。
# wifi service
# wifi sta service
service wpa_supp_com /system/bin/wpa_supplicant p2p_supported=false \
............. # wifi sta p2p concurrent service
service p2p_supp_com /system/bin/wpa_supplicant p2p_supported=true \
....................
# for rtl wifi
service p2p_supp_rtl /system/bin/wpa_supplicant \
............. service wpa_supp_rtl /system/bin/wpa_supplicant \
......................
Android 服务名称规则invalid service name 限制16字符以内的更多相关文章
- Android 服务类Service 的详细学习
http://blog.csdn.net/vipzjyno1/article/details/26004831 Android服务类Service学习四大组建 目录(?)[+] 什么是服务 服务有 ...
- Android Service 服务(一)—— Service .
http://blog.csdn.net/ithomer/article/details/7364024 一. Service简介 Service是android 系统中的四大组件之一(Activit ...
- Android服务Service总结
转自 http://blog.csdn.net/liuhe688/article/details/6874378 富貴必從勤苦得,男兒須讀五車書.唐.杜甫<柏學士茅屋> 作为程序员的我们, ...
- Java乔晓松-android的四大组件之一Service(服务的绑定)
android的四大组件之一Service(服务的绑定) 怎么绑定服务,又怎么解除服务,代码如下: MainActivity.java源码: package com.example.lesson14_ ...
- Android服务Service具体解释(作用,生命周期,AIDL)系列文章-为什么须要服务呢?
Android服务Service具体解释(作用,生命周期,AIDL) 近期沉迷于上班,没有时间写博客了.解衣入睡,未眠.随起床写一篇博客压压惊! ##我们android系统为什么须要服务Service ...
- Android服务Service
安卓Service服务 一 Service简介 Service是运行在后台的,没有界面的,用来处理耗时比较长的.Service不是一个单独的进程,也不是一个单独的线程. Service有两种类型 ...
- Kubernetes K8S之Pod跨namespace名称空间访问Service服务
Kubernetes的两个Service(ServiceA.ServiceB)和对应的Pod(PodA.PodB)分别属于不同的namespace名称空间,现需要PodA和PodB跨namespace ...
- Android 代码混淆规则
1. Proguard介绍 Android SDK自带了混淆工具Proguard.它位于SDK根目录toolsproguard下面.ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器 ...
- Android 四大组件之二(Service)
service可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务 ...
随机推荐
- DP之背包经典三例
0/1背包 HDU2602 01背包(ZeroOnePack): 有N件物品和一个容量为V的背包,每种物品均只有一件.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大 ...
- CentOS7下编译安装redis-5.0.9
CentOS7下编译安装redis-5.0.9 本文地址http://yangjianyong.cn/?p=171转载无需经过作者本人授权 下载redis #code start wget https ...
- PHP的switch和ifelse谁更快?
对于多个if条件判断的情况下,我们使用switch来代替ifelse对于代码来说会更加的清晰明了,那么他们的效率对比呢?从PHP手册中发现有人已经对比过了,自己也用他的代码进行了实验: $s = ti ...
- CSS linear-gradient() 函数
用于背景颜色渐变或画线条等场景 linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片. 创建一个线性渐变,需要指定两种颜色,还可以实现不同方向(指定为一个角度)的渐变效 ...
- 初探DispatcherServlet#doDispatch
初探DispatcherServlet#doDispatch 写在前面 SpringBoot其实就是SpringMVC的简化版本,对于request的处理流程大致是一样的, 都要经过Dispatche ...
- linux帐户安全管理与技巧
实验环境 CentosOS5.6试验台. 任务一:建立与删除普通用户账户,管理组 1)创建一个新用户user1 useradd user1 查看用户是否创建成功 2)创建一个新组group1 grou ...
- layui 添加复选框checkbox后,无法正确显示及点击的方法
layui 添加复选框checkbox后,无法正确显示方式,这个是由于html里的样式添加 layui-form后,没有加载 form插件 ,具体如下: <body style="ba ...
- AT3945-[ARC092D]Two Faced Edges【dfs】
正题 题目链接:https://www.luogu.com.cn/problem/AT3945 题目大意 \(n\)个点\(m\)条边的一张图,对于每条边求它翻转后强连通分量数量是否变化. \(1\l ...
- P3760-[TJOI2017]异或和【树状数组】
正题 题目链接:https://www.luogu.com.cn/problem/P3760 题目大意 给出\(n\)个数字的一个序列\(a\),求它所有区间和的异或和 \(n\leq 10^5,\s ...
- 揭秘:懂Python的测试员薪资到底有多高?
前言 面试的时候,面试官经常会问:会Python吗?有在工作中写过项目吗?会搭建自己的框架吗?我:恩,我只简单写过一些demo. 有时候问一些简单的Python,一问就会懵.比如:json和字典有什么 ...