安卓系统源码如何导入原生androidx资源文件?


一、问题

在安卓原生的SystemUI下增加资源文件,xxx.xml文件,此xml文件引用了
androidx.cardview.widget.CardView控件,不做其他修改,编译,报错:找不到CardView相关的控件。


二、解决思路

打开SystemUI下的Android.bp文件,这里写着SystemUI是如何编译出来的,并且引入了哪些库。

android_app {
    name: "SystemUI",
    static_libs: [
        "SystemUI-core",
    ],
    resource_dirs: [],

SystemUI引入了SystemUI-core 静态库,

android_library {
    name: "SystemUI-core",
    srcs: [
        "src/**/*.kt",
        "src/**/*.java",
        "src/**/I*.aidl",
    ],
    resource_dirs: [
        "res-keyguard",
        "res",
    ],
    static_libs: [
        "CH34xUARTDriver",
        "SystemUIPluginLib",
        "SystemUISharedLib",
        "SettingsLib",
        "androidx.legacy_legacy-support-v4",
        "androidx.recyclerview_recyclerview",
        "androidx.preference_preference",
        "androidx.appcompat_appcompat",
        "androidx.mediarouter_mediarouter",
        "androidx.palette_palette",
        "androidx.legacy_legacy-preference-v14",
        "androidx.leanback_leanback",
        "androidx.slice_slice-core",
        "androidx.slice_slice-view",
        "androidx.slice_slice-builders",
        "androidx.arch.core_core-runtime",
        "androidx.lifecycle_lifecycle-extensions",
        "androidx.dynamicanimation_dynamicanimation",
        "androidx-constraintlayout_constraintlayout",
        "iconloader_base",
        "SystemUI-tags",

SystemUI-core 包括了如上那么多的资源库,发现一个问题:
并没有看到cardview相关的资源

大概能够知道肯定要添加androidx.cardview等相关的字眼,可是具体添加哪个呢?

类比的思想,通过grepandroidx.recyclerview_recyclerview 找到了它的声明定义地方:
prebuilts/sdk/current/androidx/Android.bp

同样在此bp文件下我们也找到了cardview相关的字眼:

android_library {
    name: "androidx.cardview_cardview",
    sdk_version: "current",
    min_sdk_version: "14",
    manifest: "manifests/androidx.cardview_cardview/AndroidManifest.xml",
    static_libs: [
        "androidx.cardview_cardview-nodeps",
        "androidx.annotation_annotation",
        "androidx.core_core",
    ],
    java_version: "1.7",
}

cardview 真正实现的地方又在哪里?

路径:
prebuilts/sdk/current/androidx/m2repository/androidx/cardview/cardview/1.1.0-alpha01
ls看一下:
在这里插入图片描述
不难看出,cardview 、recyclerview等等各种androidx视图,在安卓系统源码下是一个已经封装好的jar、arr等资源文件。


三、最终措施

SystemUI下的Android.bp文件下,引入androidx.cardview_cardview资源即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值