Android.bp是用来替换Android.mk的配置文件,它使用Blueprint框架来解析。Blueprint是生成、解析Android.bp的工具,是Soong的一部分。Soong则是专为Android编译而设计的工具,Blueprint只是解析文件的形式,而Soong则解释内容的含义,最终转换成Ninja文件。android
定义一个模块从模块的类型开始,模块有不一样的类型,以下例子中的“cc_binary”,模块包含一些属性格式为“property-name:app
property-value”,其中name属性必须指定,其属性值必须是全局惟一的。框架
cc_binary{ name: "gzip", srcs: ["src/test/minigzip.c"], shared_libs: ["libz"], stl: "none", }
默认模块“cc_defaults”的用法以下。工具
cc_defaults{ name: "gzip_defaults", shared_libs: ["libz"], stl: "none", } cc_binary{ name: "gzip", defaults: ["gzip_defaults"], srcs: ["src/test/minigzip.c"], }
变量赋值能够经过“=”号赋值。ui
gzip_srcs = ["src/test/minigzip.c"], cc_binary { name: "gzip", srcs: gzip_srcs, shared_libs: ["libz"], stl: "none", }
注释包括单行注释//和多行注释/* */。
具体支持如下几种类型:spa
Bool(`true` or `false`) Integers(`int`) Strings(`"string"`) Listsof strings (`["string1", "string2"]`) Maps(`{key1: "value1", key2: ["value2"]}`)
String类型、字符串列表类型和Map类型支持操做符“+”。设计
bpfmt是一个bp文件的格式控制工具,包括4个空格的缩进、列表有多个元素时每一个元素一行、列表和map的最后一个元素多一个冗余的逗号等等。工具目录为:build/blueprint/bpfmt/code
在当前目录下执行如下命令:ip
androidmk工具能够把mk文件转换为bp文件,但一些复杂的用法和自定义的规则须要手动转换。工具目录为:build/soong/androidmk/字符串
androidmkAndroid.mk>Android.bp
Android.bp能够支持android_app、cc_binary、cc_binary_host等多种类型,具体以下图:
Android.bp能够支持5种预编译类型,以下图所示:
soong提供了能够在不一样目录中配置相同的模块名称,只要每一个模块的名称在不一样的命令空间中声明。
soong_namespace{ imports: ["path/to/otherNamespace1","path/to/otherNamespace2"], }
cc_library{ ... srcs: ["generic.cpp"], arch: { arm: { srcs: ["arm.cpp"], }, x86: { srcs: ["x86.cpp"], }, }, }