soong/android.bp 构建如何工作?

How the soong/android.bp build works?

Google引入宋建系统替代旧的makefile系统。

知道它是如何工作的吗?来源中的 Android.bp 是什么?

只有 Googlers 可以解释,一些基本的文档在这里:

https://android.googlesource.com/platform/build/soong/

也尝试搜索 Google 个群组:

https://groups.google.com/forum/#!topic/android-building/0Hy7kLwlBBk

请注意,在 Oreo 中 Android.mk 文件继续工作并且可以依赖于 Android.bp 文件,但是 Android.bp 文件不能依赖于 Android.mk 文件。显然,随着时间的推移,越来越多的构建系统将转换为 Android.bp,希望 Google 在文档方面做得更好。

2020 年 1 月更新

Google 在此处添加的更多信息:https://source.android.com/setup/build/index

Soong 构建系统等同于遗留 "Android make build system"。所以Soong是程序集,是食谱"how to build hundreds of android modules",里面有很多小工具。

Ninja 是一个真正处理由 Blueprint 或 Kati 制作的最终构建清单 (Build.ninja) 的过程 (translate Android.mk to Android.bp)。

蓝图就像GNU Make的文法,所以叫"framework for build system"。它由Go语言制作,因此它更好地提供了多处理。蓝图将 "hand-writing build manifest"(*.bp) 转换为忍者格式的最终​​清单 (build.ninja)。

  1. ninja 是 aosp 的新构建工具,它使用 *.ninja 工作;
  2. 对于旧版 Android.mk,应用 kati 将 Androd.mk 转换为 *.ninja;
  3. google 现在使用 Android.bp 文件来描述模块编译细节,它也被 blueprint/soong;
  4. 转换为 *.ninja
  5. 全部Android.mk重写为Android.bp后,kati将被移除,我们将只有blueprint/soong/ninja;

如此 link 解释。