Android.bp文件簡介


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等多種類型,具體如下圖:

image

9、支持預編譯類型

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

image

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"],

        },

    },

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM