如何运行 ABI 监控功能 |
您所在的位置:网站首页 › gki内核 › 如何运行 ABI 监控功能 |
本部分介绍了如何构建 Android 内核 ABI 表示并运行 ABI 监控。它适用于 Android 14 及更高版本。对于旧版本,请参阅旧版内核。 另请参阅 Kleaf 的参考文档:支持 ABI 监控 (GKI) 和支持 ABI 监控(设备)。 构建内核及其 ABI 表示法下载 GKI 源代码后,请运行以下命令以构建 GKI 内核和 ABI 工件: tools/bazel run //common:kernel_aarch64_abi_dist上述命令会构建当前的 ABI 表示法,并将其与构建的内核和模块一起复制到 out_abi/kernel_aarch64/dist/abi.stg。 您可以在命令末尾的 -- 之后为 ABI 工具指定额外的参数。例如,如需更改 ABI 和 build 工件的目标位置,您可以使用 --dist_dir 选项: tools/bazel run //common:kernel_aarch64_abi_dist -- --dist_dir=out/dist 分析 build 与参考表示法之间的 ABI 差异在上述命令中执行的 //common:kernel_aarch64_abi_dist 目标会分析并报告位于 common/android/abi_gki_aarch64.stg 的 build 与参考表示法(在 BUILD.bazel 中定义)之间的任何 ABI 差异。这些差异将在构建结束时输出,如以下示例所示: INFO: From [stg] Comparing Kernel ABI @//common:kernel_aarch64_abi_diff: INFO: ABI DIFFERENCES HAVE BEEN DETECTED!输出的报告来自位于 out_abi/kernel_aarch64/dist/abi_stgdiff/abi.report.short(还包含其他格式的报告)的构建工件。 自动化应使用构建命令的退出代码;如果发现差异,该值将为非零值。 请注意,开发阶段分支(包括 android-mainline)没有参考 ABI 表示法。如果没有参考 ABI 表示法,//common:kernel_aarch64_abi_dist 将无法检测到任何差异。 更新参考 ABI 表示法任何影响内核 ABI 的更改(例如符号列表更新)都需要反映在参考 ABI 表示法(common/android/abi_gki_aarch64.stg,在 BUILD.bazel 中定义)中。为此,您需要运行以下命令: tools/bazel run //common:kernel_aarch64_abi_update此命令会执行分析 ABI 差异步骤中的所有步骤,并更新源代码中的参考表示法。然后,您可以使用与更改相同的提交内容上传更新后的 ABI。请在提交消息中包含 $DIST_DIR/abi.report.short 中报告的 ABI 差异。 ABI 监控和设备目标只需要为核心内核 build 目标配置 ABI 监控。直接使用 GKI 内核编译的混合 build 配置(定义 base_kernel 的配置)只需支持跟踪设备符号列表。 ABI 定义应该使用 GKI build 进行更新。 另请参阅 Kleaf 的参考文档:支持 ABI 监控(设备)。 旧版内核 Android 13除了 ABI 格式为 XML 且参考 ABI 表示为 common/android/abi_gki_aarch64.xml 之外,构建说明与 Android 14 大体相同。 Android 12 及更低版本与 Android 13 一样,ABI 格式为 XML。 较旧的内核使用 build.sh 而不是 Kleaf。对于 ABI 监控,您应使用 build_abi.sh,它接受与 build.sh 相同的环境变量自定义 build。例如: BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh这会构建内核,并将 ABI 表示法提取到 OUT_DIR(默认为 out_abi)子目录中,等同于 Kleaf 的 //common:kernel_aarch64_abi_dist 目标(请参阅构建内核和 ABI 工件)。 参考 ABI 表示法存储在 android/abi_gki_aarch64.xml 中,如 common/build.config.gki.aarch64 中的 ABI_DEFINITION 变量所定义。 如果您需要更新内核 ABI 表示法,最方便的方法是使用 --update 和 --print-report 选项: BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update --print-report--print-report 会输出现有文件与新生成的 ABI 之间的 ABI 差异。 --update 选项会覆盖参考 ABI 表示法。此外,它还会在已配置 KMI_SYMBOL_LIST 的设备中使用 BUILD_CONFIG 时,执行符号列表更新。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |