参考
Android 12系统源码_WIFI(一)WIFI相关服务的启动流程
Android中Wifi网络配置信息的保存加载与更改—WifiConfigStore.java解析
具体实现
1、设备使用debug 版本连接一个可用wifi。导出配置文件。
adb pull /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
2、WifiConfigStore.xml将内置到system_ext目录下(不影响GSI)
# default wifi config
PRODUCT_COPY_FILES += vendor/hello/etc/WifiConfigStore.xml:system_ext/etc/WifiConfigStore.xml
3、在init.rc 增加启动触发
+++ b/system/core/rootdir/init.rc
@@ -1130,6 +1130,12 @@ on property:sys.boot_completed=1
exec - system system -- /bin/rm -rf /data/per_boot
mkdir /data/per_boot 0700 system system encryption=Require key=per_boot_ref
+# Modify add built-in wifi
+on property:persist.sys.wifi_config=1
+ mkdir /data/misc/apexdata/com.android.wifi 0771 root system
+ copy /system_ext/etc/WifiConfigStore.xml /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
+ chown system system /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
4、在SystemServer启动wifi 服务前触发配置文件拷贝(仅首次开机触发,不影响用户操作后的配置)。
+++ b/frameworks/base/services/java/com/android/server/SystemServer.java
@@ -1854,6 +1854,16 @@ public final class SystemServer implements Dumpable {
PackageManager.FEATURE_WIFI)) {
// Wifi Service must be started first for wifi-related services.
t.traceBegin("StartWifi");
+ //Modify add built-in wifi 2024/05/28 [s]
+ String propWifiConfig = "persist.sys.wifi_config";
+ if(mFirstBoot){
+ Slog.d(TAG, "mFirstBoot trigger copy wifi config.");
+ SystemProperties.set(propWifiConfig, "1");//trigger copy wifi config
+ }else if(SystemProperties.getBoolean(propWifiConfig, false)){
+ Slog.d(TAG, "none mFirstBoot restore.");
+ SystemProperties.set(propWifiConfig, "0");
+ }
+ //Modify add built-in wifi 2024/05/28 [e]