没有繁杂的理论,单纯分享如何为我们的模块写 bp 文件,或者说如何将我们添加的模块加入到 bp 文件中。
1、确定模块的编译类型
这是首先要确定下来的,我们需要把源代码编译成什么类型的?常见的模块类型有:
android_app
:app,就是编写一个 apk
cc_binary
:可执行文件
cc_library_shared
:native 动态库
cc_library_static
:native 静态库
java_library
:java 库
java_library_shared
:java 动态库
还有好多模块类型,再列举也没啥意义了,当然,我也列举不出了。
2、指定模块名和模块源码位置
比如我现在要编写一个名为 DuoDuo 的 apk,最基本的必须写下面两行,指定模块源码路径和编译后的模块名称,要注意,每项结束后都有 ,
。
android_app {
//编译后的模块名称
name: "DuoDuo",
//该模块对应的源码路径,是相对与 bp 文件所在目录的路径
srcs: ["src/**/*.java"],
}
但其实我们编写过程中肯定会用到各种库,不可能这么简单就完事了,下面就拿 anroid 源码举几个例子。
3、实列
3.1 实列 1:基本使用
/packages/apps/Car/Dialer/Android.bp
,先看下该目录下文件结构。
下面解析一下,CarDialerApp 这个 apk 的写法。
44 android_app {
//编译后模块名
45 name: "CarDialerApp",
46 //模块对应的源码路径
47 srcs: ["src/**/*.java"],
48 //资源配置路径,color,layout等
49 resource_dirs: ["res"],
50
//指定 sdk version,与当前系统的保持一致
51 sdk_version: "system_current",
52
//在编译这个模块前,先编译 allowed_privapp_com.android.car.dialer
53 required: ["allowed_privapp_com.android.car.dialer"],
54
//platform 签名
55 certificate: "platform",
56
//应该类似于 LOCAL_OVERRIDES_PACKAGES,也即覆盖掉原生的 Dialer,使其不编译