log+android+bp,第二章:Android.bp语法

一. Android.bp语法初识

1.1 模块

从前面的列子可以看出定义一个模块从模块的类型开始,模块有不同的类型,如前面例子中的cc_library_shared,当然类型还有很多种,譬如cc_binary、android_app 、cc_library_static等等。模块包含一些属性格式为“property-name:property-value”,其中name属性必须指定,其属性值必须是全局唯一的。

其中默认模块可用于在多个模块中重复相同的属性

cc_defaults {// //默认模块名称

name: "default_module",

shared_libs: ["libz"],

stl: "none",

}

cc_binary {

name: "test1",

defaults: ["default_module"], //引用默认模块名称

srcs: ["src/test/test.c"],

}

srcs 属性以字符串列表的形式指定用于编译模块的源文件。您可以使用模块引用语法 “:” 来引用生成源文件的其他模块的输出,如 genrule 或 filegroup。

实例说明:

~/aosp$ cd frameworks/base/core/java/

~/aosp/frameworks/base/core/java$ vi Android.bp

filegroup {

name: "IKeyAttestationApplicationIdProvider.aidl",

srcs: ["android/security/keymaster/IKeyAttestationApplicationIdProvider.aidl"],

}

filegroup {

name: "IDropBoxManagerService.aidl",

srcs: ["com/android/internal/os/IDropBoxManagerService.aidl"],

~/aosp/frameworks/base/core$ cd ..

~/aosp/frameworks/base$ vi libs/services/Android.bp

cc_library_shared {

name: "libservices",

srcs: [

":IDropBoxManagerService.aidl", //这里引用了上面定义的模板

"src/os/DropBoxManager.cpp",

"src/os/StatsDimensionsValue.cpp",

"src/os/StatsLogEventWrapper.cpp",

],

shared_libs: [

"libbinder",

"liblog",

"libcutils",

"libutils",

]

}

1.2 变量

我们知道Android.mk中可以定义变量,当然作为新编译系统中替代Android.mk的Android.bp也是一定存在,更加何况Android.mk还可以一定条件的转换成Android.bp。

变量范围限定为声明它们的文件的其余部分,可以使用 “=” 号赋值, 但是不能使用 “:=” 赋值。变量是不可变的,但有一个例外它们可以附上+= 赋值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值