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

        },

    },

}

Android.bp文件简介的更多相关文章

  1. Android资源文件简介

    Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, 资源 ...

  2. Android.bp学习笔记

    1.Android.bp简介 Android 7.0之后希望用Android.bp替换Android.mk,bp简单的配置更方便Ninja 文件的产生,而Blueprint和Soong 就此产生.An ...

  3. 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...

  4. Android.bp 添加宏开关【转】

    本文转载自:https://github.com/zzb2760715357/document/blob/master/android_doc/Android.bp%E6%B7%BB%E5%8A%A0 ...

  5. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...

  6. Android资源文件说明

    一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...

  7. Android编译系统中的Android.bp【转】

    本文转载自: 转自:http://note.qidong.name/2017/08/android-blueprint/ Android编译系统中的Android.bp.Blueprint与Soong ...

  8. Android.mk 文件语法详解

    0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build Syst ...

  9. [安卓]AndroidManifest.xml文件简介及结构

    1.AndroidManifest.xml文件简介: 每个应用程序在它的根目录中都必须要有一个AndroidManifest.xml(名字须精确一致)文件.这个清单把应用程序的基本信息提交给Andro ...

随机推荐

  1. [bzoj4823][洛谷P3756][Cqoi2017]老C的方块

    Description 老 C 是个程序员. 作为一个懒惰的程序员,老 C 经常在电脑上玩方块游戏消磨时间.游戏被限定在一个由小方格排成的R行C列网格上 ,如果两个小方格有公共的边,就称它们是相邻的, ...

  2. CQBZOJ 【重庆市NOIP模拟赛】避难向导

    题目描述 "特大新闻,特大新闻!全国爆发了一种极其可怕的病毒,已经开始在各个城市 中传播开来!全国陷入了巨大的危机!大量居民陷入恐慌,想要逃到其它城市以 避难!经调查显示,该病毒来自于C 市 ...

  3. 异想家Win10系统安装的软件与配置

    1.C盘推荐一个硬盘,256G,安装好驱动,显卡配置好高性能,激活Win10,屏蔽WIn10驱动更新(Show or hide updates.diagcab),改电脑名称为Sandeepin-PC. ...

  4. go编写简单接口的过程

    环境 系统 Windows server 2016 Datacener go version go1.13.3 windows/amd64 数据库 Microsoft SQL Server 2014( ...

  5. [C语言学习笔记二] extern 函数的用法

    extern 用来定义一个或多个变量.其后跟数据类型名和初始值.例如: extern int a =10 它与 int,long long int,double,char的本质区别,在于 extern ...

  6. Oracle监听器

    Oracle 监听器 Listener 是一个重要的数据库服务器组件,在整个 Oracle 体系结构中,扮演着重要的作用.它负责管理 Oracle 数据库和客户端之间的通讯,它在一个特定的网卡端口(默 ...

  7. 编译调试 .NET Core 5.0 Preview 并分析 Span 的实现原理

    很久没有写过 .NET Core 相关的文章了,目前关店在家休息所以有些时间写一篇新的

  8. Docker快速上手之部署SpringBoot项目

    Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...

  9. <状压DP>solution-HDU5691_Sitting in Line

    Sitting in Line Problem Description 度度熊是他同时代中最伟大的数学家,一切数字都要听命于他.现在,又到了度度熊和他的数字仆人们玩排排坐游戏的时候了.游戏的规则十分简 ...

  10. svn: Can't connect to host '': 由于目标机器积极 原因及解决办法

    在dos环境下输入命令“svnserve -d --listen-port 3690 -r d:\svn” 这里“d:\svn” 是你在svn中创建的版本库路径,然后执行命令,记住窗口不能关闭,关闭之 ...