展銳平臺(Android15)WLAN熱點名稱修改不生效問題分析

前言

在展銳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 組件 在組件面…