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

news/2025/2/6 20:28:56 标签: android, 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资源即可!


http://www.niftyadmin.cn/n/5843304.html

相关文章

计算机网络之数据链路层(数据链路层的功能)

帧同步: 数据链路层将网络层传下来的数据报封装成帧,为了区分不同的帧,需要在每个帧的开头和结尾添加特殊的标记,以实现帧的定界和同步。这样,接收方就能准确地识别出一个帧的开始和结束。 差错控制: 在…

Windows Docker笔记-简介摘录

Docker是一个开源的容器化平台,可以帮助开发人员将应用程序与其依赖项打包在一个独立的容器中,然后在任何安装的Docker的环境中快速、可靠地运行。 几个基本概念和优势: 1. 容器 容器是一个轻量级、独立的运行环境,包含了应用程…

如何解决 Vue 应用中的内存泄漏

如何解决 Vue 应用中的内存泄漏 如何解决 Vue 应用中的内存泄漏常见的内存泄漏原因1. 组件生命周期管理不善2. 闭包引起的引用3. 数据订阅与发布系统4. 第三方库的内存泄漏5. 路由缓存和组件实例堆积排查内存泄漏的工具1. **Chrome DevTools**2. **Firefox Developer Tools**3.…

使用 Java 和 FreeMarker 实现自动生成供货清单,动态生成 Word 文档,简化文档处理流程。

在上一篇博客中主要是使用SpringBootApache POI实现了BOM物料清单Excel表格导出,详见以下博客: Spring Boot Apache POI 实现 Exc()el 导出:BOM物料清单生成器(支持中文文件名、样式美化、数据合并&#…

IDA Pro的基础指南

引言 在网络安全和软件分析领域,逆向工程是理解程序行为、挖掘漏洞或分析恶意软件的核心技能之一。而IDA Pro(Interactive Disassembler)作为逆向工程的“瑞士军刀”,是每位安全研究员和分析师的必备工具。本文将带你从零开始&…

设计模式学习(三)

行为模式 职责链模式(Chain of Responsibility Pattern) 定义 它允许多个对象有机会处理请求,从而避免请求的发送者与接收者之间的耦合。职责链模式将这些对象连成一条链,并沿着这条链传递请求,直到有对象处理它为止…

基于Python实现机器视觉与深度学习相结合的项目

以下是一个基于Python实现机器视觉与深度学习相结合的项目,用于对茶汤照片进行背景处理、提取RGB值的详细步骤及代码示例。 整体思路 图像读取与预处理:从采集装置传输到电脑的照片,使用OpenCV库读取图像,并进行灰度转换、高斯模…

MySQL索引类型详解

MySQL 中的索引是提高查询性能的重要工具。不同的索引类型适用于不同的场景,选择合适的索引类型可以显著提升查询效率。以下是 MySQL 中常见索引类型的详细解析。 1. 索引的基本概念 索引是一种数据结构,用于快速查找数据库表中的特定行。MySQL 支持多种…