Android.bp和Android.mk之间的区别

时间:2018-09-18 10:46:17

标签: android build-system

在Android O框架代码中,我们同时看到Android.bp和Android.mk文件。这两个文件需要什么?根据文档,.bp文件用于soong构建系统。当我们进行构建时,将执行哪个文件? .mk或.bp?

1 个答案:

答案 0 :(得分:1)

Soong是适用于Android的构建系统,旨在替代旧的make-based build system。 Soong读取Android.bp文件,这些文件以类似Bazel的语法定义模块。 Soong本身是用Blueprint框架之上的Go语言编写的,该框架反过来又使用Ninja作为后端。忍者是专为高效率而设计的,尤其是对于增量构建。

由于Android是一个大型项目,因此迁移到Soong / Android.bp将需要一些时间。在过渡期间,两种格式都受支持,其中Soong表示Android.bp,而Kati表示Android.mk。标准构建将同时运行。 Android.mk文件中的模块可以取决于Android.bp文件中的模块,但不能相反。

Android.bp的一个重要区别是缺少显式的if语句来提高性能。 Android.mk文件可以包含对任意环境变量的ifeq检查,而Android.bp格式仅允许区分预定义的情况,例如处理器体系结构或调试/发布版本(reference )。自定义大小写的区别必须在Go中单独定义。

由于设计差异,无法将Android.mk自动转换为Android.bp, 尽管有一个名为androidmk的工具可以翻译简单 将Android.mk个文件(例如,没有if语句)保存到Android.bp