Android 8.0 introduced a modular kernel, splitting the device kernel into a system-on-chip (SoC), device, and board-specific deliverables. This change made it possible for original device manufacturers (ODMs) and original equipment manufacturers (OEMs) to work in isolated, board-specific trees for board-specific features and drivers, enabling them to override common kernel configurations, add new drivers in the form of kernel modules, etc.
Modular kernel support in Android includes the following:
- Platform support for independent SoC and OEM/ODM kernel development.
Android 9 and higher recommends building and
shipping all board-specific code as kernel modules in devices. As a result:
- All platforms should support either devicetree or Advanced Configuration and Power Interface (ACPI) to describe all non-discoverable devices.
- All devicetree-based platforms should add board-specific device nodes to the kernel devicetree as overlays.
- Application binary interface (ABI) and application programming interface (API) tests in Vendor Test Suite (VTS). These tests ensure that a given kernel can run the Android Open Source Project (AOSP) framework.
- Minimum kernel version per Android release.
- Support for generating Android Vendor Interface (VINTF) kernel objects.