Android平台开发之从Android.mk到Android.bp--如何引入jar包和so库

最近一直在从事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",
            ],
        }
    }

中加入即可。

你可能感兴趣的:(Android)