在Android框架代码中,我们可以看到Android.bp和Android.mk文件。这两个文件有什么需要?根据文档,宋代构建系统使用.bp文件。当我们进行构建时,将执行哪个文件?.mk还是.bp?
发布于 2019-02-02 18:19:30
Soong是一个针对安卓系统的构建系统,旨在取代旧的make-based build system。Soong读取Android.bp
文件,这些文件以类似于Bazel的语法定义模块。Soong本身是在Blueprint框架之上用Go编写的,而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 (reference)中单独定义。
由于设计上的差异,Android.mk
到Android.bp
的自动转换是不可行的,尽管有一个名为androidmk的工具可以将简单的Android.mk
文件(例如,没有if语句)转换为Android.bp
。
https://stackoverflow.com/questions/52384832
复制