前言

在展锐Android V项目开发中,需要修改softAp/P2P热点名称时,发现集成GMS后直接修改framework层代码无效。具体表现为:

  • 修改packages/modules/Wifi/WifiApConfigStore中的getDefaultApConfiguration方法
  • 编译烧录后修改不生效

问题根源在于:Wi-Fi模块在Android S(12)及以上版本已纳入Mainline模块

Mainline模块机制解析

什么是Mainline?

Google将部分核心模块独立开发维护,这些模块会随系统更新单独升级,不再依赖AOSP版本迭代。这导致:

  • 修改本地代码会被系统预置模块覆盖
  • 整编时无法打包修改后的模块

受影响模块列表

参考Google官方文档:模块化系统架构

Wi-Fi模块自Android 11开始Mainline化

问题分析

修改失效原因

  1. 代码覆盖:Mainline模块优先级高于本地修改
  2. 编译机制:GMS版本会强制使用预置模块
  3. 认证限制:关闭Mainline会影响GTS测试

解决方案矩阵

方案适用场景限制条件
Overlay机制修改配置参数需展锐平台支持
运行时设置动态修改热点名需处理冲突逻辑
关闭Mainline仅限国内版本影响GMS认证

具体解决方案

方案1:使用Overlay机制(推荐)

展锐平台已提供Overlay配置入口:
vendor/sprd/platform/frameworks/opt/net/wifi/service/ServiceUniWifiResources/res/values/config.xml

<string name="config_wifi_softap_ssid">custom</string>
<string name="config_wifi_p2p_device_name">MyP2PName</string>

方案2:运行时动态设置

通过系统广播监听实现首次启动配置:

// 监听BOOT_COMPLETED广播
public class HotspotInitializer extends BroadcastReceiver {private static final String PREF_HOTSPOT_SET = "hotspot_initialized";@Overridepublic void onReceive(Context context, Intent intent) {if (isAlreadyConfigured(context)) return;WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);SoftApConfiguration config = wifiManager.getSoftApConfiguration();String newSsid = SystemProperties.get("ro.product.model") + "_HOTSPOT";wifiManager.setSoftApConfiguration(new SoftApConfiguration.Builder(config).setSsid(newSsid).build());markAsConfigured(context);}private boolean isAlreadyConfigured(Context ctx) {return PreferenceManager.getDefaultSharedPreferences(ctx).getBoolean(PREF_HOTSPOT_SET, false);}
}

关键点:

  1. 使用SharedPreferences记录配置状态
  2. 通过系统属性获取设备型号作为SSID基础
  3. 需在AndroidManifest.xml中注册广播接收器

方案3:关闭Mainline模块(仅限国内版本)

在BoardConfig.mk中添加:

# 关闭Wi-Fi Mainline模块(影响GTS测试)
MAINLINE_INCLUDE_WIFI_MODULE := false

风险提示:

  • 可能导致GMS认证失败
  • 无法接收Wi-Fi模块安全更新
  • 仅建议在非GMS版本或测试环境使用

在这里插入图片描述

总结与建议

  1. 优先方案:使用Overlay机制(方案1),这是最安全合规的方式
  2. 备选方案:运行时设置(方案2),需处理好配置冲突
  3. 最后手段:关闭Mainline(方案3),仅限特定场景使用

对于GMS认证设备,建议采用方案1+方案2组合:

  • 使用Overlay设置默认值
  • 通过运行时机制允许用户自定义
  • 保留系统设置入口作为最终配置渠道

最后

附上Android15上测试可用的修改方法:
vendor/sprd/platform/packages/app/UniWifi/app/res/values/config.xml

     <!-- Carrier default softap ssid via IMEI, like as 1234, name1, name2 --><string-array translatable="false" name="config_uniwifi_softap_default_ssid_via_imei"></string-array><!-- Customer default softap ssid -->
-    <string translatable="false" name="config_uniwifi_softap_default_ssid"></string>
+    <string translatable="false" name="config_uniwifi_softap_default_ssid">custom</string><!-- Preset Carrier Network as Suggestion according to software version --><!-- ro.carrier, ssid, eap type(WifiConfiguration.SECURITY_TYPE#3-5-9),

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918365.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918365.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918365.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wsl ubuntu访问(挂载)vmware vmdk磁盘教程

之前使用VMware Workstation 虚拟机跑了个ubuntu&#xff0c;现在改用wsl了&#xff0c; 想把vmware的磁盘挂载到wsl ubuntu。一、磁盘合并我原先的vmware跑的ubuntu存在多个vmdk文件&#xff08;磁盘文件&#xff09;&#xff0c;需要先将磁盘合并成一个才方便挂载。首先你电脑…

UGUI源码剖析(3):布局的“原子”——RectTransform的核心数据模型与几何学

UGUI源码剖析&#xff08;第三章&#xff09;&#xff1a;布局的“原子”——RectTransform的核心数据模型与几何学 在前几章中&#xff0c;我们了解了UGUI的组件规范和更新调度机制。现在&#xff0c;我们将深入到这个系统的“几何学”核心&#xff0c;去剖析那个我们每天都在…

c++注意点(15)----设计模式(桥接模式与适配器模式)

一、结构型设计模式两者有点相似&#xff0c;都是为了做到解耦的功能。适配器模式是一种结构型设计模式&#xff0c; 它能使接口不兼容的对象能够相互合作。桥接模式是一种结构型设计模式&#xff0c; 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构&…

DuoPlus支持导入文件批量配置云手机参数,还优化了批量操作和搜索功能!

作为我常用的一款还不错的跨境工具&#xff0c;DuoPlus云手机帮我高效完成了很多跨境工作&#xff0c;它的功能也在逐步完善和优化&#xff0c;今天来聊聊它最近新更新的一些功能。功能更新一览新增导入文件配置参数&#xff1a;批量初始化代理、批量修改参数支持导入文件一键配…

PLC如何实现通过MQTT协议物联网网关接入管理云平台

在工业4.0与智能制造浪潮下&#xff0c;企业亟需实现设备数据的高效采集与云端协同&#xff0c;以支撑远程监控、预测性维护等场景。工业智能网关凭借其强大的协议解析能力、边缘计算功能及安全传输机制&#xff0c;成为PLC接入云平台的核心解决方案。本文将从技术架构、功能模…

通过sealos工具在ubuntu 24.02上安装k8s集群

一、系统准备&#xff08;1&#xff09;安装openssh服务 sudo apt install openssh-server sudo systemctl start ssh sudo systemctl enable ssh&#xff08;2&#xff09;放通防火墙 sudo ufw allow ssh&#xff08;3&#xff09;开通root直接登录 vim /etc/ssh/sshd_config#…

nginx+Lua环境集成、nginx+Lua应用

nginxluaredis实践 概述 nginx、lua访问redis的三种方式&#xff1a; 1。 HttpRedis模块。 指令少&#xff0c;功能单一 &#xff0c;适合简单的缓存。只支持get 、select命令。 2。 HttpRedis2Module模块。 功能强大&#xff0c;比较灵活。 3。 lua-resty-redis库 OpenResty。…

机器学习 K-Means聚类 无监督学习

目录 K-Means 聚类&#xff1a;从原理到实践的完整指南 什么是 K-Means 聚类&#xff1f; 应用场景举例 K-Means 算法的核心原理 K-Means 算法的步骤详解 可视化理解 K-Means 的优缺点分析 优点 缺点 如何选择合适的 K 值&#xff1f; 1. 肘部法&#xff08;Elbow Me…

RabbitMQ面试精讲 Day 16:生产者优化策略与实践

【RabbitMQ面试精讲 Day 16】生产者优化策略与实践 开篇 欢迎来到"RabbitMQ面试精讲"系列第16天&#xff0c;今天我们聚焦RabbitMQ生产者优化策略与实践。在消息队列系统中&#xff0c;生产者的性能表现直接影响整个系统的吞吐量和可靠性。掌握生产者优化技巧不仅能…

Android 系统的安全 和 三星安全的区别

维度Android&#xff08;AOSP 通用&#xff09;Samsung&#xff08;Knox 强化&#xff09;本质差异一句话信任根标准 Verified Boot&#xff08;公钥由谷歌或 OEM 托管&#xff09;额外在 自家 SoC 里烧录 Knox 密钥 熔丝位&#xff0c;一旦解锁即触发 Knox 0x1 熔断&#xff…

开源大模型实战:GPT-OSS本地部署与全面测评

文章目录一、引言二、安装Ollama三、Linux部署GPT-OSS-20B模型四、模型测试4.1 AI幻觉检测题题目1&#xff1a;虚假历史事件题目2&#xff1a;不存在的科学概念题目3&#xff1a;虚构的地理信息题目4&#xff1a;错误的数学常识题目5&#xff1a;虚假的生物学事实4.2 算法题测试…

【无标题】命名管道(Named Pipe)是一种在操作系统中用于**进程间通信(IPC)** 的机制

命名管道&#xff08;Named Pipe&#xff09;是一种在操作系统中用于进程间通信&#xff08;IPC&#xff09; 的机制&#xff0c;它允许不相关的进程&#xff08;甚至不同用户的进程&#xff09;通过一个可见的文件系统路径进行数据交换。与匿名管道&#xff08;仅存在于内存&a…

Baumer相机如何通过YoloV8深度学习模型实现危险区域人员的实时检测识别(C#代码UI界面版)

《------往期经典推荐------》 AI应用软件开发实战专栏【链接】 序号 项目名称 项目名称 1 1.工业相机 + YOLOv8 实现人物检测识别:(C#代码,UI界面版) 2.工业相机 + YOLOv8 实现PCB的缺陷检测:(C#代码,UI界面版) 2 3.工业相机 + YOLOv8 实现动物分类识别:(C#代码,U…

本文章分享一个本地录音和实时传输录音给app的功能(杰理)

我用的是杰理手表sdk&#xff0c;该功能学会就可自行在任何杰里sdk上做&#xff0c;库函数大致一样&#xff0c;学会运用这个方向就好。1.我们要验证这个喇叭和麦是否正常最简单的的办法&#xff0c;就是直接万用表测试&#xff0c;直接接正负极&#xff0c;看看是否通路&#…

Netty-Rest搭建笔记

0.相关知识Component、Repository、ServiceRepository //Scope设置bean的作用范围 Scope("singleton")//单例 prototype每次创建都会给一个新实例。 public class BookDaoImpl implements BookDao { //生命周期public void save() {System.out.println("book d…

工作笔记-----lwip网络任务初始化问题排查

工作笔记-----基于FreeRTOS的lwIP网络任务初始化问题排查 Author&#xff1a;明月清了个风Date&#xff1a; 2025/8/10PS&#xff1a;新项目中在STMF7开发板上基于freeRTOS和lwIP开发网口相关任务&#xff0c;开发过程中遇到了网口无法连接的问题&#xff0c;进行了一系列的排查…

Kotlin动态代理池+无头浏览器协程化实战

我看到了很多作者展示了Kotlin在爬虫领域的各种高级用法。我需要从中提取出最"牛叉"的操作&#xff0c;也就是那些充分利用Kotlin语言特性&#xff0c;使爬虫开发更高效、更强大的技巧。 我准备用几个主要部分来组织内容&#xff0c;每个部分会突出Kotlin特有的"…

PDF编辑工具,免费OCR识别表单

软件介绍 今天推荐一款功能全面的PDF编辑工具——PDF XChange Editor&#xff0c;支持文本、图片编辑及OCR识别&#xff0c;还能一键提取表单信息&#xff0c;满足多样化PDF处理需求。 软件优势 该软件完全免费&#xff0c;下载后双击图标即可直接运行&#xff0c;无需安装&…

OpenEnler等Linux系统中安装git工具的方法

在欧拉系统中安装 Git使用 yum 包管理器安装&#xff08;推荐&#xff0c;适用于欧拉等基于 RPM 的系统&#xff09;&#xff1a;# 切换到 root 用户&#xff08;若当前不是&#xff09; su - root# 安装 Git yum install -y git验证安装是否成功&#xff1a;git --version若输…

UE5 第三人称视角如何设置camera移动旋转

“奇怪&#xff0c;这blog不支持md格式吗”## 第1步&#xff1a;设置玩家Pawn 创建一个蓝图类&#xff0c;继承自 Pawn&#xff0c;在游戏模式&#xff08;Game Mode&#xff09;中&#xff0c;将这个Pawn设置为默认 在组件面板中&#xff0c;添加一个 Spring Arm 组件 在组件面…