最近一直在从事Android平台的开发,在framework下服务这一块的时候发现之前的Android.mk都被替换成了Android.bp,这就对需要在alps/frameworks/base/services/core下面引入.jar和.so,以及为其声明aidl源文件目录造成了困扰。
因为之前一直使用的是Android.mk文件,所以对Android.bp文件不是特别熟悉。所以我的思路就是先想好Andorid.mk中我们是如何做到这些的,将其写入一个Android.mk 文件中,然后再通过工具将其转化成Android.bp。
先说一下工具的使用
在路径alps/out/soong/host/linux-x86/bin下有个androidmk,我们可以将我们写好的Android.mk文件复制到这个目录,然后在当前目录下打开终端,输入命令:
./androidmk Android.mk > Android.bp
然后在这个目录下会多出一个Android.bp文件。我们打开这个文件找出我们想加的部分,然后按套路假如到alps/frameworks/base/services/core下的Android.bp中即可。
那接下来就看看jar包时如何加入的:
首先在alps/frameworks/base/services/core下也就是java同级目录新建libs目录,然后将我们的jar包拷贝到这个文件夹中。
然后进入Android.bp文件中
static_libs: [
"time_zone_distro",
"time_zone_distro_installer",
"android.hardware.authsecret-V1.0-java",
"android.hardware.broadcastradio-V2.0-java",
"android.hardware.health-V1.0-java",
"android.hardware.health-V2.0-java",
"android.hardware.weaver-V1.0-java",
"android.hardware.biometrics.face-V1.0-java",
"android.hardware.biometrics.fingerprint-V2.1-java",
"android.hardware.oemlock-V1.0-java",
"android.hardware.tetheroffload.control-V1.0-java",
"android.hardware.vibrator-V1.0-java",
"android.hardware.configstore-V1.0-java",
"android.hardware.contexthub-V1.0-java",
"android.hidl.manager-V1.2-java",
"dnsresolver_aidl_interface-V2-java",
"netd_aidl_interface-V2-java",
"netd_event_listener_interface-java",
+ "MSO_Secu111",
],
+java_import {
+ name: "MSO_Secu111",
+ jars: ["libs/MSO_Secu.jar"],
}
这样编译过后我们就可以使用这个jar了,同理so也是一样的
如果我们想引入在其他模块中已经编译过的,且在out中也能找到的jar,我们可以直接在static_libs中加入即可。
static_libs: [
"time_zone_distro",
"time_zone_distro_installer",
"android.hardware.authsecret-V1.0-java",
"android.hardware.broadcastradio-V2.0-java",
"android.hardware.health-V1.0-java",
"android.hardware.health-V2.0-java",
"android.hardware.weaver-V1.0-java",
"android.hardware.biometrics.face-V1.0-java",
"android.hardware.biometrics.fingerprint-V2.1-java",
"android.hardware.oemlock-V1.0-java",
"android.hardware.tetheroffload.control-V1.0-java",
"android.hardware.vibrator-V1.0-java",
"android.hardware.configstore-V1.0-java",
"android.hardware.contexthub-V1.0-java",
"android.hidl.manager-V1.2-java",
"dnsresolver_aidl_interface-V2-java",
"netd_aidl_interface-V2-java",
"netd_event_listener_interface-java",
+ "vendor.mediatek.hardware.nvram-V1.0-java",
],
如果是so就在alps/frameworks/base/services/core/jni下的Android.bp
product_variables: {
arc: {
shared_libs: [
"libarcbridge",
"libarcbridgeservice",
"libarctimer",
"libbase",
"libcap",
"libchrome",
"libmojo",
+ "libMSO100",
+ "libMSO_Secu",
+ "libNativeMorphoSmartSDK_6.29.0.0",
+ "libusb1.0",
],
}
}
中加入即可。