Android.bp详解
一个Android.bp是一个json类型的文件,内容通常具有如下格式:
module_name{
"name" : "XXXX",
...
}
Android.bp常见用法
声明一个C++默认配置
cc_defaults {
name: "test_defaults", //模块名称
shared_libs: ["XXX"], //设置使用共享库
stl: "none", //设置stl library
}
创建一个C++ 动态/静态库
cc_library(_shared|_static){
name : "test_lib",
srcs: ["*/test.cpp"],
}
创建一个C++ 应用
cc_binary {
name: "test",
defaults: ["test_defaults"], //默认配置
srcs: ["*/minigzip.cpp"], //文件路径
static_libs: ["test_lib",]
vendro: true //是否打包到vendor分区
}
声明一个java默认配置
java_defaults {
...
}
创建一个java .jar包
java_library{
name: "XXX",
srcs:["*/test.java"],
static_libs:["xxx",],
}
创建一个apk
android_app{
...
}
Android.bp 常见字段总结
| 打包目标 | java_library | 打包成.jar包 | |||
cc_library(_static/_shared/_header) | 打包成.lib/.so/头文件库 | ||||
cc_binary | 打包成native程序 | ||||
java_binary | 打包成java程序 | ||||
android_app | 打包成Android应用程序 | ||||
aidl_interface | hidl打包成.jar/.so | ||||
hidl_interface | aidl打包成.jar/.so | ||||
| 文件路径 | srcs | 需要打包的文件path | |||
excluded_srcs | 在打包时不可包含的文件path | ||||
| 依赖的库 | static_libs | 依赖的静态库/.jar包 | |||
shared_libs | 依赖的动态库 | ||||
| 分区选项 | vendor | 是否打包到vendor分区 | |||
system_ext | 是否打包到ext分区 | ||||
| 语言选项 | aidl | back_end | java | enabled | 是否开启 |
sdk_version | sdk版本,默认system_current | ||||
ndk | enabled | 是否开启 | |||
sdk_version | sdk版本,默认current | ||||
| hidl | gen_java | 是否生成.jar库 |
上表给出了一些bp文件中的常见字段,所有字段的示意可见soong docs。