Requisitos básicos del núcleo

Android 8.0 y versiones posteriores exigen una versión mínima del kernel y una configuración del kernel, que son verificadas por Vendor Test Suite (VTS) y actualizaciones inalámbricas (OTA). Los kernels de dispositivos Android deben habilitar la compatibilidad con kernel .config y la opción de leer la configuración del kernel en tiempo de ejecución a través del sistema de archivos procfs .

Compatibilidad con .config del núcleo

Todos los kernels de los dispositivos deben habilitar la totalidad de android-base.cfg , que debe incluir las siguientes opciones de configuración del kernel (o su versión del kernel equivalente):

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y

Versión del núcleo

Para Android 9, los requisitos mínimos de la versión del kernel de soporte a largo plazo (LTS) son 4.4.107, 4.9.84 y 4.14.42.

  • Todos los SoC producidos en 2018 deben lanzarse con kernel 4.9.84 o superior.
  • Todos los demás SoC que inicien dispositivos Android con Android 9 deben usar el kernel 4.4.107 o superior.
  • Los núcleos de dispositivos basados ​​en 4.14 deben incluir la versión LTS 4.14.42 o superior.
  • Independientemente de la fecha de lanzamiento, todos los SoC con lanzamientos de dispositivos en Android 8.0 y superior siguen estando sujetos a los cambios de kernel necesarios para habilitar Treble.
  • Los dispositivos Android más antiguos que se actualicen a Android 8.0 o superior pueden continuar usando su versión base original del kernel.

Para obtener detalles sobre los kernels LTS, consulte Kernels estables a largo plazo y Kernels comunes de Android

Soporte de árbol de dispositivos

Si la plataforma no es compatible con la especificación de configuración avanzada e interfaz de energía (ACPI) , la compatibilidad con el árbol de dispositivos en el kernel debe estar habilitada y los cargadores de arranque deben pasar la descripción del hardware en forma de un árbol de dispositivos al kernel. El árbol de dispositivos también debe estar disponible para que Android lo lea, y debe poder pasar parámetros específicos del proveedor y del ODM a Android. CONFIG_OF es obligatorio, junto con todas las demás opciones de configuración del kernel CONFIG_OF_* específicas del dispositivo y del subsistema.

Usando DebugFS

La implementación de la interfaz del proveedor no puede depender del sistema de archivos DebugFS para acceder a la información de depuración. Esto se debe a que en Android 7.0–10, DebugFS se puede habilitar, pero las pruebas de VTS se pueden realizar con DebugFS desmontado.

En Android 11, no se puede acceder a DebugFS ni montarlo en dispositivos de producción, por lo que los fabricantes de dispositivos deben eliminarlo. Antes de Android 11, dumpstate accedía a las estadísticas de carpetas de DebugFS . Debido a que las compilaciones de usuario que se inician con Android 11 o superior no pueden acceder a DebugFS , dumpstate accede a las estadísticas de binder desde binderfs . Para habilitar Binderfs , habilite la configuración del kernel CONFIG_ANDROID_BINDERFS .

En Android 11, VTS impone estos dos requisitos:

  • CONFIG_DEBUG_FS no está habilitado en la configuración del kernel del dispositivo.
  • DebugFS no aparece en /proc/filesystems .

DebugFS en Android 11

La siguiente tabla describe cómo se admite cada una de estas tres categorías en Android 11. Tenga en cuenta que lo siguiente solo se aplica a las compilaciones de depuración de usuarios, ya que DebugFS no se puede montar en las compilaciones de usuarios. Nunca DebugFS en compilaciones de usuario para dispositivos que se inicien en Android 11.

caso de uso Compilación de depuración de usuario de Android 11
Inicialización única de archivos DebugFS , durante el inicio . Este acceso ocurre solo una vez durante el tiempo de arranque. El proveedor init hace esto.
Generación de informes de errores: el dumpstate HAL lee los archivos DebugFS , que pasan a formar parte del informe de errores. Realizado por dumpstate HAL dentro de DumpstateBoard() cuando es invocado por la herramienta dumpstate.
Pruebas y validación específicas del dispositivo Adb root y shell