Android Kernel 编译:Bazel 编译 GKI 内核

GKI (Generic Kernel Image) 概述

Android 11 引入的 GKI 架构将内核分为两部分:

  • ​通用内核映像 (GKI)​​:由 Google 维护,包含核心内核功能
  • ​供应商模块​​:由设备制造商提供,包含设备特定的驱动和功能

从 Android 13 开始,内核构建系统转向 Bazel,特别是在 master 分支上。

Bazel 详解:构建系统的革命

什么是 Bazel?

Bazel 是 Google 开源的​​快速、可靠、可扩展的构建系统​​,最初由 Google 内部使用(名为 Blaze),后于2015年开源。它专门设计用于解决大规模代码库的构建问题,支持多种语言(Java、C++、Go、Python、Android、iOS等)和平台。

核心特性

  1. ​高性能构建​​:

    • 增量构建:只重新编译修改过的部分
    • 并行执行:充分利用多核CPU
    • 远程缓存:支持分布式构建缓存
  2. ​可重复性​​:

    • 严格的依赖管理
    • 沙箱执行环境
    • 构建结果与开发环境隔离
  3. ​多语言支持​​:

    • 原生支持 Java、C++、Python、Go、Rust 等
    • 通过规则扩展支持更多语言(如 Android、iOS)
  4. ​可扩展性​​:

    • 自定义构建规则
    • 支持大规模代码库(Google 内部代码库超过20亿行)

Bazel 在 Android 中的应用

为什么 Android 转向 Bazel?

  1. ​GKI 需求​​:Android 11+ 的通用内核映像需要更灵活的构建系统
  2. ​构建速度​​:传统 make 系统在大规模项目上性能不足
  3. ​可重复性​​:确保不同环境下的构建结果一致
  4. ​多语言支持​​:Android 涉及 Java、C++、Rust 等多种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值