Android.bp是用來替換Android.mk的組態檔,它使用Blueprint框架來決議,Blueprint是生成、決議Android.bp的工具,是Soong的一部分,Soong則是專為Android編譯而設計的工具,Blueprint只是決議檔案的形式,而Soong則解釋內容的含義,最終轉換成Ninja檔案,
1、模塊
定義一個模塊從模塊的型別開始,模塊有不同的型別,如下例子中的“cc_binary”,模塊包含一些屬性格式為“property-name:
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"],
}
2、變數
變數賦值可以通過“=”號賦值,
gzip_srcs = ["src/test/minigzip.c"],
cc_binary {
name: "gzip",
srcs: gzip_srcs,
shared_libs: ["libz"],
stl: "none",
}
3、注釋
注釋包括單行注釋//和多行注釋/* */,
4、型別
具體支持以下幾種型別:
Bool(`true` or `false`)
Integers(`int`)
Strings(`"string"`)
Listsof strings (`["string1", "string2"]`)
Maps(`{key1: "value1", key2: ["value2"]}`)
5、運算子
String型別、字串串列型別和Map型別支持運算子“+”,
6、格式控制工具
bpfmt是一個bp檔案的格式控制工具,包括4個空格的縮進、串列有多個元素時每個元素一行、串列和map的最后一個元素多一個冗余的逗號等等,工具目錄為:build/blueprint/bpfmt/
在當前目錄下執行以下命令:
7、Android.mk轉為Android.bp
androidmk工具可以把mk檔案轉換為bp檔案,但一些復雜的用法和自定義的規則需要手動轉換,工具目錄為:build/soong/androidmk/
androidmkAndroid.mk>Android.bp
8、支持的模塊型別
Android.bp可以支持android_app、cc_binary、cc_binary_host等多種型別,具體如下圖:

9、支持預編譯型別
Android.bp可以支持5種預編譯型別,如下圖所示:

10、模塊名稱決議
soong提供了可以在不同目錄中配置相同的模塊名稱,只要每個模塊的名稱在不同的命令空間中宣告,
soong_namespace{
imports: ["path/to/otherNamespace1","path/to/otherNamespace2"],
}
11、條件式編譯
cc_library{
...
srcs: ["generic.cpp"],
arch: {
arm: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/31659.html
標籤:Android
