Android.bp编译aar

1,946 阅读1分钟
  1. 通过android_library_import声明需要导入的aar包,名称、位置。
  2. 声明后,通过static_libs引入aar
  3. 如果有aar有资源文件,需要解压,并且在resource_dirs中声明。否则编译会找不到资源。
  4. 添加aaptflags, --extra-packages" 可以解决R文件id找不到问题。
  5. 最重要一点,当依赖的aar包,本身还需要其他依赖时,需要在该aar的android_library_import,通过static_libs方式重复引入。
  resource_dirs: [
        "res",
        "res_unisoc",
        "res_zyb",
    ],

    static_libs: [
        "vendor.sprd.hardware.connmgr-V1.0-java",
        "settings-metrics-constants-protos",
        "lottie",
        "lib_user_center",
    ],

    libs: [
        "unisoc_ims_common",
        "radio_interactor_common",
    ],
    aaptflags: [
            "--extra-packages",
            "com.zuoyebang.iot.pad.zpusercenter",
        ],
}

platform_compat_config {
    name: "Settings_proguard_flags",
    srcs: ["proguard.flags"],
}
android_library_import {
    name: "lib_user_center",
    aars: ["libs/lib_user_center.aar"],
    sdk_version: "current",

     static_libs: [  // 就是这里,需要二次导入aar需要的依赖
            "androidx-constraintlayout_constraintlayout",
            "androidx.appcompat_appcompat",
            "androidx.cardview_cardview",
            "androidx.recyclerview_recyclerview",
            "com.google.android.material_material",
            "androidx-constraintlayout_constraintlayout-solver",
        ],
}

源码中的三方依赖资源一般在以下两个位置,可以参考查找。

prebuilts/tools/common/m2/repository

external


Android.bp 文件中引入aar、jar、so库正确编译方法(值得收藏)

Jetpack太香了,系统App也想用,怎么办?