You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 9及以上版本AOSP构建时预配置WiFi SSID与密码方法

Android 9及以上版本不再支持通过修改wpa_supplicant_overlay.conf预置WiFi凭据。从该版本开始Google将WiFi配置的读写权限全部收归系统Wifi服务,wpa_supplicant仅保留底层连接执行能力,所有配置必须经过系统服务校验写入才会生效,直接修改supplicant配置会在服务启动时被覆盖清空。以下是经过量产验证的可行实现方案:

方案1:资源Overlay预置(适配Android9-Android14,官方推荐)

该方案完全遵循AOSP定制规范,不需要修改核心业务逻辑,版本兼容性最好。

  • 第一步:在设备专属的overlay目录下创建对应资源路径,模块化AOSP(Android10+)路径为device/<你的厂商名>/<你的设备codename>/overlay/packages/modules/Wifi/service/res/values/;未做WiFi模块化的Android9版本路径为device/<厂商名>/<设备codename>/overlay/frameworks/opt/net/wifi/service/res/values/。如果不想做独立overlay,直接修改AOSP源码中对应路径下的config.xml也能生效,但后续同步AOSP代码时会被覆盖,不推荐量产使用。
  • 第二步:在上述路径下新建(或修改已有)config.xml文件,写入预置WiFi配置,支持同时配置多个网络,参考配置如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array translatable="false" name="config_defaultWifiNetwork">
        <!-- 单个网络对应一个item节点 -->
        <item>
            <WifiConfiguration>
                <!-- SSID必须用双引号包裹,双引号属于配置值的一部分 -->
                <string name="SSID">"Office_WiFi"</string>
                <!-- PSK密码同样需要双引号包裹,开放网络不需要该字段 -->
                <string name="PreSharedKey">"12345678"</string>
                <!-- 安全类型:开放网络填NONE,WPA2个人填PSK,WPA2/WPA3混合兼容填PSK SAE,企业网填EAP -->
                <string name="AllowedKeyMgmt">PSK SAE</string>
                <!-- 连接优先级,数值越大优先级越高 -->
                <int name="Priority" value="200" />
                <boolean name="IsShareable" value="false" />
            </WifiConfiguration>
        </item>
    </string-array>
</resources>
  • 第三步:确认设备编译配置文件(一般是对应目录下的device.mk)中已经加入overlay目录的编译规则,即存在PRODUCT_PACKAGE_OVERLAYS += device/<厂商名>/<设备codename>/overlay配置,全量编译刷入后,设备首次开机会自动加载配置并尝试连接对应网络,用户后续可以手动删除该预置网络。
方案2:首次开机文件注入(适配全版本,适合固定配置场景)

该方案通过init触发规则,在WiFi服务启动前直接写入预置好的配置文件,不需要修改framework资源。

  • 第一步:提前从已经连接过目标WiFi的样机中导出WifiConfigStore.xml配置文件,Android10+的文件路径为/data/misc/apexdata/com.android.wifi/WifiConfigStore.xml,Android9路径为/data/misc/wifi/WifiConfigStore.xml,将导出的文件存放到设备目录device/<厂商名>/<设备codename>/wifi/下。
  • 第二步:编写init触发规则,在post-fs-data阶段检测到首次开机无对应配置文件时,将预置文件复制到目标路径并修正权限,参考规则如下:
on post-fs-data
    # 创建对应目录并设置权限
    mkdir /data/misc/apexdata/com.android.wifi 0770 wifi wifi
    # 预置配置不存在时才复制,避免覆盖用户后续保存的WiFi配置
    copy /system/etc/wifi/WifiConfigStore.xml /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
    chown wifi wifi /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
    chmod 0660 /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
  • 第三步:在device.mk中添加配置,将预置的WifiConfigStore.xml和init规则文件分别复制到系统/system/etc/wifi/和/system/etc/init/目录下,全编译即可生效。
    注意:Android12及以上版本因为Apex模块加载顺序调整,该方案可能出现配置被服务重置的问题,无特殊需求优先选择方案1。
旧方案失效原因

Android 8及更早版本中,wpa_supplicant进程直接持有WiFi配置的读写权限,系统启动时会直接读取wpa_supplicant目录下的配置文件加载网络,因此修改overlay配置即可生效;Android9开始新增WifiConfigStore作为配置唯一可信来源,所有配置变更必须通过系统Wifi服务的API写入,直接修改底层supplicant文件会被判定为非法篡改,启动时直接重置。

内容的提问来源于stack exchange,提问作者Hemanth Chowdary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.16 16:15:41