Крайне важно поддерживать стабильный KMI для модулей поставщиков. Ядро GKI собирается и поставляется в бинарном виде, а загружаемые поставщиком модули строятся в отдельном дереве. В результате ядро GKI и модули поставщика должны работать так, как если бы они были собраны вместе.
Как правило, Linux-сообщество не одобряет идею стабильности ABI в ядре для основного ядра. Перед лицом различных цепочек инструментов, конфигураций и постоянно развивающегося ядра основной ветки Linux невозможно поддерживать стабильный KMI в основной ветке. Однако можно поддерживать стабильный KMI в среде GKI с жесткими ограничениями при следующих ограничениях:
- Только одна конфигурация, - gki_defconfig, может использоваться для сборки ядра.
- KMI стабилен только в одной и той же версии ядра LTS и Android, например - android13-5.10,- android12-5.10или- android13-5.15.-  Для android-mainlineне поддерживается стабильность KMI.
 
-  Для 
- Для сборки ядра и модулей используется только конкретная цепочка инструментов Clang , поставляемая в AOSP и определенная для соответствующей ветки. 
- Только известные символы, используемые модулями, как указано в списке символов, отслеживаются на предмет стабильности и считаются символами KMI. - Следствием этого является то, что модули поставщиков должны использовать только символы KMI. Это ограничение применяется при неудачной загрузке модуля, если требуются символы, отличные от KMI.
 
- После того, как ветвь KMI заморожена, изменения разрешены, но не могут нарушить KMI. Эти изменения включают следующее: - Изменения конфигурации
- Изменения кода ядра
- Изменения цепочки инструментов (включая обновления)
 
Используйте герметичный процесс сборки и набор инструментов LLVM
 Герметичный процесс сборки обеспечивает стабильный KMI, поскольку манифесты repo в kernel/manifest полностью описывают среду сборки. Например, манифест для android13-5.15 включает набор инструментов, сценарии сборки и все остальное, необходимое для сборки ядра Generic Kernel Image (GKI). Соответствующие файлы конфигурации build.config , такие как конфигурация сборки GKI build.config.gki.aarch64 , обеспечивают правильное использование включенных инструментов для получения согласованных результатов сборки.
 Использование герметичного процесса сборки также гарантирует согласованность описания ABI для дерева независимо от того, сгенерировано ли оно Google (например, abi_gki_aarch64.xml для android13-5.15 или сгенерировано в локальном дереве, которое включает модули поставщиков. Инструменты для создания и сравнения Описание ABI для интерфейса модуля ядра (KMI) также предоставляется как часть репозитория, описываемого манифестом.
Цепочка инструментов, используемая для сборки ядра GKI, должна быть полностью совместима с цепочкой инструментов, используемой для сборки модулей поставщиков. Начиная с Android 10, все ядра Android должны быть собраны с помощью цепочки инструментов LLVM. При использовании GKI цепочка инструментов LLVM, используемая для создания ядер продуктов и модулей поставщиков, должна генерировать тот же ABI, что и цепочка инструментов LLVM от AOSP, а партнеры должны обеспечить совместимость KMI с ядром GKI. Настоятельно рекомендуется использовать предоставленные инструменты сборки, поскольку они обеспечивают гарантии совместимости.
Что дальше?
- Инструкции по сборке ядра с использованием герметичного процесса сборки и цепочки инструментов LLVM см. в разделе Сборка ядер . 
- Инструкции по мониторингу ABI и устранению проблем см. в статье Мониторинг ABI ядра Android. 
