Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Wifi

El módulo Wi-Fi es actualizable, lo que significa que puede recibir actualizaciones de la funcionalidad fuera del ciclo normal de lanzamiento de Android. Este módulo contiene los siguientes componentes.

Componentes del módulo Wi-Fi

Figura 1. Wi-Fi componentes del módulo y la arquitectura

El módulo Wi-Fi ofrece los siguientes beneficios.

  • Los usuarios finales obtienen una experiencia de Wi-Fi uniforme en todos los dispositivos Android y solucionan problemas de interoperabilidad a través de actualizaciones de módulos.

  • Los desarrolladores de aplicaciones obtienen una fragmentación de plataforma reducida.

  • Los OEM pueden cumplir con los requisitos del operador y, al mismo tiempo, reducir los costos de las personalizaciones individuales (ya que no necesitan diferentes implementaciones de los mismos requisitos de diferentes maneras).

Límite del módulo

El servicio de Wi-Fi continúa ejecutándose dentro del proceso de Servicio del sistema. El módulo Wi-Fi incluye todo el código en packages/modules/Wifi incluyendo las siguientes.

  • Clases de SDK y de servicios para WifiService , WifiP2pService , WifiAwareService , WifiScannerService y WifiRttService
  • OsuLogin
  • ServiceWifiResources

El módulo excluye los siguientes componentes, que siguen siendo parte de la compilación AOSP del OEM.

  • wificond componente nativo en el system/connectivity/wificond
  • wificond interfaz (clases en el paquete android.net.wifi.nl80211 , por ejemplo, WifiNl80211Manager )
  • android.net.wifi.SoftApConfToXmlMigrationUtil
  • android.net.wifi.WifiNetworkScoreCache
  • android.net.wifi.WifiMigration
  • WifiTrackerLib
  • libwifi_hal
  • libwifi_system
  • libwifi_system_iface

Android 11 no mueve archivos, pero las versiones futuras podrían hacerlo. Para reducir el esfuerzo involucrado en la transferencia de cambios de ubicación de archivos, recomendamos ascender tantos cambios como sea posible a AOSP (después de migrarlos a Android 11 o refactorizar extensiones patentadas para usar API de Android formales o extensiones HAL del proveedor para desenredarlas del código AOSP.

Formato del módulo

El módulo Wi-Fi ( com.google.android.wifi.apex ) está en APEX formato y está disponible para dispositivos con Android 11 o superior. El archivo APEX incluye los siguientes componentes.

  • Biblioteca SDK ( framework-wifi.jar )
  • Biblioteca de servicio ( service-wifi.jar )
  • OsuLogin APK ( OsuLoginGoogle.apk )
  • APK de recursos ( ServiceWifiResourcesGoogle.apk )
  • Certificados WFA

Dependencias del módulo

El módulo Wi-Fi depende de los siguientes componentes.

  • Conectividad
  • Telefonía
  • Bibliotecas de proto
  • Componentes misceláneos del sistema
  • WiFi HAL
  • wificond
  • bouncycastle
  • ksoap2
  • libnanohttpd

Este módulo interactúa con el marco utilizando sólo es estable @SystemApi (sin @hide uso de la API) y está firmado con una firma Google en lugar de una firma plataforma.

Personalización

El módulo Wi-Fi no es compatible con la personalización directa, pero se puede personalizar la configuración utilizando superposiciones de recursos en tiempo de ejecución (RRO) o configuraciones de soporte.

Personalización de Wi-Fi

Personalizar módulo de línea principal Figura 2. Wi-Fi

  • Para las pequeñas personalizaciones, activar o desactivar la configuración en la RRO config .
  • Para un mayor control, los valores de configuración del personalizar para cualquier clave de configuración portadora expuesta como @SystemAPI .

Usar superposiciones de recursos en tiempo de ejecución

Puede personalizar el módulo Wi-Fi anulando las configuraciones predeterminadas mediante RRO. Para obtener una lista de configuraciones overlayable, consulte packages/modules/Wifi/service/ServiceWifiResources/res/values/overlayable.xml . Para detalles de la configuración de comportamiento, consulte packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml . Para una aplicación de superposición muestra, consulte device/google/coral/rro_overlays/WifiOverlay/ .

Debido a que el device/google/coral/rro_overlays/WifiOverlay/AndroidManifest.xml conjuntos de archivos del targetPackage de atributos a com.android.wifi.resources y el APK de recursos entregados por el módulo Wi-Fi tiene nombre de paquete com.google.android.wifi.resources , debe configurar la superposición aPKs targetPackage a com.google.android.wifi.resources para superponer las configuraciones de Wi-Fi con éxito.

Migrar el formato de almacenamiento de la configuración

El módulo de Wi-Fi puede analizar solo el formato de almacenamiento de configuración de Wi-Fi de AOSP. Si ha modificado previamente el formato de almacenamiento de la configuración de Wi-Fi (que incluye la lista de red guardada del usuario), debe convertir esos datos al formato AOSP cuando actualice un dispositivo a cualquier versión de Android que incluya el módulo Wi-Fi. Los ganchos necesarios para esta conversión están en el android.net.wifi.WifiMigration clase.

Implemente la conversión de formato en los siguientes métodos.

  • WifiMigration.convertAndRetrieveSharedConfigStoreFile(<storeFileId>)

    • Invocado por el módulo Wi-Fi para recuperar el contenido del archivo de la tienda compartida Wi-Fi que se ha convertido al formato AOSP.

    • Estos archivos fueron previamente (en Android 10) almacenada en el /data/misc/wifi carpeta en el dispositivo.

  • WifiMigration.convertAndRetrieveUserConfigStoreFile(<storeFileId>)

    • Invocado por el módulo de Wi-Fi para recuperar el contenido del archivo de tienda específico del usuario de Wi-Fi que se ha convertido al formato AOSP.

    • Estos archivos fueron previamente (en Android 10) almacenada en los /data/misc_ce/<userId>/wifi carpeta del dispositivo.

Acceder a API de Wi-Fi ocultas

Símbolos (clases, métodos, campos, etc.) con anotada @hide en el módulo Wi-Fi no son parte de su superficie API pública y no se puede acceder en dispositivos con el módulo instalado. Los dispositivos que no incluyen el módulo Wi-Fi puede seguir utilizando @hide API de Wi-Fi utilizando los siguientes pasos.

  1. Eliminar las restricciones de visibilidad colocados sobre framework-wifi en packages/modules/Wifi/framework/Android.bp eliminando el impl_library_visibility atributo.

    java_sdk_library {
        name: "framework-wifi",
        ...
        impl_library_visibility: [  // delete this attribute
            ...
        ],
        ...
    }
    
  2. Cambiar la regla de construcción para permitir el acceso de la biblioteca @hide API de Wi-Fi. Por ejemplo, la siguiente es una regla de construcción para un java_library .

    java_library {
        name: "foo-lib",
    
        // no sdk_version attribute defined
    
        libs: [
            "dependency1",
            "dependency2",
        ],
    }
    

    Para permitir el acceso a la biblioteca foo-lib , cambiar la regla de construcción como se muestra a continuación.

    java_library {
        name: "foo-lib",
    
        sdk_version: "core_platform",
    
        libs: [
            "framework-wifi.impl",
            "framework",
            "dependency1",
            "dependency2",
        ],
    }
    
  3. Asegurar que las framework-wifi.impl aparece antes de framework en la lista de libs . El orden de las dependencias en el libs atributo es significativa.

Acceder a las API de framework ocultas

Símbolos con anotada @hide fuera del módulo Wi-Fi no se puede acceder por código en el módulo Wi-Fi. Los dispositivos que no incluyen el módulo Wi-Fi puede seguir utilizando @hide API externos (por ejemplo, de framework.jar ) en el service-wifi haciendo las siguientes modificaciones a frameworks/opt/net/wifi/service/Android.bp .

  1. En tanto wifi-service-pre-jarjar y service-wifi , cambiar el sdk_version atributo a core_platform .

  2. En tanto wifi-service-pre-jarjar y service-wifi , añadir framework y android_system_server_stubs_current a la libs atributo.

  3. Verifique que el resultado sea similar al siguiente ejemplo de código.

    java_library {
        name: "wifi-service-pre-jarjar",
        ...
        sdk_version: "core_platform",
        ...
        libs: [
            ...
            "framework",
            "android_system_server_stubs_current",
        ],
    }
    ...
    java_library {
        name: "service-wifi",
        ...
        sdk_version: "core_platform",
        ...
        libs: [
            ...
            "framework",
            "android_system_server_stubs_current",
        ],
    }
    

Pruebas

Android Compatibility Test Suite (CTS) verifica la funcionalidad del módulo Wi-Fi mediante la ejecución de un conjunto completo de pruebas CTS en cada versión del módulo. También puede ejecutar las pruebas descritas en la prueba, depuración y optimización de Wi-Fi .