网络调整config.xml的android.mk解析

news/2025/10/4 12:12:45/文章来源:https://www.cnblogs.com/slgkaifa/p/19125473

网络调整config.xml的android.mk解析

LOCAL_PATH:= $(call my-dir)       //vendor/qti/overlays/CneEthernetOverlay/
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res						核心就是通过这个目录中的资源来替换目标应用或系统中的同名资源。
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/overlay			指定该模块安装的目标路径  , /vendor/overlay/, Android 系统会在启动时扫描 /vendor/overlay/ 目录,加载 RRO 模块。
LOCAL_MANIFEST_FILE := AndroidManifest.xml			这个文件是 RRO 的核心配置文件,必须包含
LOCAL_PACKAGE_NAME := CneEthernetOverlay			编译后生成的 APK 文件名为:CneEthernetOverlay.apk
LOCAL_SDK_VERSION := current
LOCAL_CERTIFICATE := platform				指定对该 APK 进行签名的密钥, platform 表示使用 platform key
LOCAL_MODULE_OWNER := qti					指定该模块的“所有者”为 qti(Qualcomm Technologies, Inc)
LOCAL_VENDOR_MODULE := true					标记该模块为 vendor 模块。
include $(BUILD_RRO_PACKAGE)		:这是构建规则的入口

这段代码是一个 Android 的 Android.mk 构建脚本,用于定义一个 Resource-Only Overlay(RRO) 模块,名称为 CneEthernetOverlay。它属于 Android 的资源覆盖机制(Runtime Resource Overlay),常用于厂商(如 Qualcomm、Samsung)在不修改原生系统代码的情况下,动态替换系统或其他应用的资源。

下面我们逐行解释其含义和作用:


1. LOCAL_PATH := $(call my-dir)

LOCAL_PATH := $(call my-dir)
  • 作用:将当前 Android.mk 文件所在的目录路径赋值给变量 LOCAL_PATH
  • $(call my-dir) 是一个 Make 函数,返回当前 .mk 文件的路径。
  • 这是每个 Android.mk 文件的标准开头,用于后续相对路径引用。

✅ 示例:如果 Android.mkvendor/qti/overlays/CneEthernetOverlay/,那么 LOCAL_PATH 就是这个路径。


2. include $(CLEAR_VARS)

include $(CLEAR_VARS)
  • 作用:清除之前定义的所有 LOCAL_XXX 变量(如 LOCAL_SRC_FILESLOCAL_MODULE 等),但保留 LOCAL_PATH
  • 这是为了确保当前模块的定义不会受到之前模块的影响。
  • 是每个模块定义前的必要步骤

相当于“重置”构建环境。


3. LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_SRC_FILES := $(call all-subdir-java-files)
  • 作用:递归查找当前目录及其子目录下的所有 .java 文件,并作为源文件。
  • 但在 RRO(Resource-Only Overlay) 模块中,通常不需要 Java 代码
  • ❗ 这里可能是 冗余或错误配置,因为 RRO 只关心资源(res/)和清单文件(AndroidManifest.xml),不需要编译 Java 代码。

⚠️ 建议:对于纯资源覆盖,应删除此行或确认是否有 Java 文件需要编译(极少见)。


4. LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res

LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
  • 作用:指定该模块的资源目录为 res/(相对于 LOCAL_PATH)。
  • 这个目录下通常包含:
    • values/strings.xml:覆盖字符串
    • drawable/:覆盖图片
    • layout/:覆盖布局(较少见)
  • RRO 的核心就是通过这个目录中的资源来替换目标应用或系统中的同名资源

5. LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/overlay

LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/overlay
  • 作用:指定该模块安装的目标路径。
  • $(TARGET_OUT_VENDOR)/overlay 通常是:
    /vendor/overlay/
  • Android 系统会在启动时扫描 /vendor/overlay/ 目录,加载 RRO 模块。
  • ✅ 这是 vendor overlay 的标准安装路径

6. LOCAL_MANIFEST_FILE := AndroidManifest.xml

LOCAL_MANIFEST_FILE := AndroidManifest.xml
  • 作用:指定该模块的 AndroidManifest.xml 文件路径(相对于 LOCAL_PATH)。
  • 这个文件是 RRO 的核心配置文件,必须包含:
    <manifest android:sharedUserId="android.uid.system"><overlay android:targetPackage="com.android.systemui" />
    </manifest>
  • 其中 android:targetPackage 指明了要覆盖哪个应用的资源(如 SystemUISettings 等)。

7. LOCAL_PACKAGE_NAME := CneEthernetOverlay

LOCAL_PACKAGE_NAME := CneEthernetOverlay
  • 作用:定义该模块的名称。
  • 编译后生成的 APK 文件名为:
    CneEthernetOverlay.apk
  • 该名称也用于在系统中标识这个 overlay 模块。

8. LOCAL_SDK_VERSION := current

LOCAL_SDK_VERSION := current
  • 作用:指定编译该模块时使用的 SDK 版本。
  • current 表示使用当前 AOSP 源码树的最新 SDK(即未发布版本)。
  • 对于 vendor 模块,通常使用 currentsystem_current

对比:LOCAL_SDK_VERSION := 30 表示使用 Android 11 的 SDK。


9. LOCAL_CERTIFICATE := platform

LOCAL_CERTIFICATE := platform
  • 作用:指定对该 APK 进行签名的密钥。
  • platform 表示使用 platform keybuild/target/product/security/platform.x509.pem + platform.pk8)。
  • RRO 模块要覆盖系统应用,必须使用与目标应用相同的签名,否则系统会拒绝加载。

✅ 如果 targetPackageSystemUI(platform 签名),那么 overlay 也必须用 platform 签名。


10. LOCAL_MODULE_OWNER := qti

LOCAL_MODULE_OWNER := qti
  • 作用:指定该模块的“所有者”为 qti(Qualcomm Technologies, Inc)。
  • 主要用于构建系统内部记录和依赖管理。
  • 不影响 APK 功能,但有助于追踪模块来源。

11. LOCAL_VENDOR_MODULE := true

LOCAL_VENDOR_MODULE := true
  • 作用:标记该模块为 vendor 模块
  • 影响:
    • 安装路径(如 /vendor/overlay/
    • SELinux 上下文
    • 构建依赖解析
  • ✅ 对于高通等 SoC 厂商的 overlay,必须设置为 true

12. include $(BUILD_RRO_PACKAGE)

include $(BUILD_RRO_PACKAGE)
  • 作用:这是构建规则的入口,告诉构建系统:
    • 这是一个 Resource-Only Overlay Package
    • 使用 RRO 的特殊构建流程,生成一个只包含资源的 APK。
  • $(BUILD_PACKAGE) 不同,BUILD_RRO_PACKAGE 不会编译 Java 代码,也不会生成 classes.dex

总结:这个模块是做什么的?

项目说明
模块名CneEthernetOverlay
类型Resource Overlay (RRO)
作用覆盖某个系统应用(如 CneEthernetService)的资源(字符串、颜色、布局等)
安装路径/vendor/overlay/CneEthernetOverlay.apk
签名platform(与系统应用一致)
目标通过 AndroidManifest.xml 中的 android:targetPackage 指定要覆盖的应用

️ 典型 AndroidManifest.xml 内容推测

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.qualcomm.qti.CneEthernetOverlay"android:versionCode="1"android:versionName="1.0"android:sharedUserId="android.uid.system"><application android:hasCode="false" /><overlayandroid:targetPackage="com.qualcomm.qti.cne"android:targetName="CneOverlay"android:isStatic="false"android:priority="1" />
</manifest>
  • targetPackage:被覆盖的应用包名
  • priority:优先级,数字越大优先级越高
  • isStaticfalse 表示运行时可启用/禁用

✅ 建议优化

  1. 移除 LOCAL_SRC_FILES(除非真有 Java 文件):

    # LOCAL_SRC_FILES := $(call all-subdir-java-files)  # 删除或注释
  2. 确保 res/ 目录存在且结构正确

  3. 确认 AndroidManifest.xml 中的 targetPackage 正确


这个模块是典型的 高通 vendor overlay,用于定制化网络或连接相关的系统行为,属于 Android 定制开发中的常见模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android】RuntimeShader 应用

1 简介 ​ RuntimeShader 是 Android 13(T)中新增的特性,用于逐像素渲染界面,它使用 AGSL(Android Graphics Shading Language)编写着色器代码,底层基于 Skia 图形渲染引擎。官方介绍详见 → RuntimeShader。…

一个公司多个网站做优化程序开发平台

1&#xff0c;已经创建了通用树结构&#xff0c;有必要创建另一种树结构吗&#xff1f; 2&#xff0c;简化树就直接减少结点中孩子的数量&#xff0c;但是这样树还能通用吗&#xff1f; 3&#xff0c;通用树结构的回顾&#xff1a; 1&#xff0c;双亲孩子表示法&#xff1a; 1&…

【Rive】rive-android源码分析

1 前言 ​ 本文基于 rive-android 10.1.0 进行源码分析,主要介绍 Rive 的渲染类型、RendererType 透传流程、Surface 透传流程、渲染流程、启动渲染流程、暂停渲染流程等内容。 ​ rive-android 类图框架如下。…

惠州专业网站建设价格wordpress网站维护教程

技术复盘--git 资料地址原理图安装配置基本命令分支命令对接gitee练习:远程仓库操作 资料地址 学习地址-B站黑马&#xff1a;https://www.bilibili.com/video/BV1MU4y1Y7h5 git官方&#xff1a;https://git-scm.com/ gitee官网&#xff1a;https://gitee.com/ 原理图 说明&am…

zkSync Era主网上线:首个zkEVM全面开放的技术突破

zkSync Era主网正式对外开放,这是全球首个完全开放的zkEVM解决方案。文章详细介绍了其独特的技术架构,包括原生账户抽象、LLVM编译器、数据压缩和超扩展性设计,以及经过多重安全审计的系统安全保障机制。gm zkEVM!…

企业网站开发知名品牌有哪些建设银行网站点击次数

公司简介 陕西集群物联网服务管理股份有限公司旗下的“集群e家”是专注于社区商圈O2O服务的平台&#xff0c;为社区&#xff08;乡村&#xff09;家庭提供创新的家庭消费服务及消费体验。集群e家智慧生活是以社区&#xff08;乡村&#xff09;为中心&#xff0c;以“互联网”的…

免费建商城网站快速网站seo效果

【Java】全套云HIS&#xff08;医院信息管理系统&#xff09;可对接医保 采用云端SaaS模式部署 SaaS 模式的云 HIS 更适用于基层医疗机构&#xff0c;而传统的 HIS 已经在大中型医疗机构大规模应用。过去&#xff0c;国内的大中型医疗机构投入了大量的资金来进行信息化系统建设…

建站推广网站收费做网站

#基础概念# #入门 数据库的主要分类 关系型数据库&#xff08;RDBMS&#xff09; 数据以表格形式存储&#xff0c;通过预定义的关系模型建立数据间的连接&#xff0c;使用SQL作为查询语言。常见的例子包括MySQL、Oracle、SQL Server、PostgreSQL、IBM DB2等。 非关系型数据库…

鄂尔多斯网站建设公司小程序模板源码免费下载

1. opencv概述 OpenCV是一个开源的计算机视觉库&#xff0c;它提供了一系列丰富的图像处理和计算机视觉算法&#xff0c;包括图像读取、显示、滤波、特征检测、目标跟踪等功能。 opencv官网&#xff1a;https://opencv.org/ opencv官网文档&#xff1a;https://docs.opencv.or…

完整教程:基于Spring Boot的爱琴海购物公园网上商城系统的设计与实现

完整教程:基于Spring Boot的爱琴海购物公园网上商城系统的设计与实现2025-10-04 11:55 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto…

Microsoft Access SQL 查询中的通配符 - 详解

Microsoft Access SQL 查询中的通配符 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

洛谷P11738 [集训队互测 2015] 未来程序改

这道题很显然是一道编译原理的题…… 本文简单的介绍了下Lexer, Parser和Interpreter的写法(实际上写编译器需要的是CodeGen) 可以看看,但是对OI似乎没什么用懒得写这么大的模拟了,想学的可以去看看我的项目QAQ很显…

mcp 面试题

什么是 MCP(Model Context Protocol) MCP 是 OpenAI 推出的 大模型上下文交互协议。它的作用是标准化 LLM 与外部工具、数据源、事件系统的交互方式。 在没有 MCP 之前,开发者需要为每个插件单独设计接口,成本高且…

做qq空间动态皮肤网站网络营销常用的方法

个人博客&#xff1a;代码菌-CSDN博客 专栏&#xff1a;C杂货铺_代码菌的博客-CSDN博客 目录 &#x1f308;前言&#x1f308; &#x1f4c1; 初始化列表&#xff08;灰常重要&#xff09; &#x1f4c2; 引入 &#x1f4c2; 概念 &#x1f4c2; 特性 &#x1f4c1; 拓展构…

6_什么是知识图谱

知识图谱(Knowledge Graph)是一种用于表示和存储知识的结构化数据模型。它以图的形式组织信息,其中实体(entities)作为节点,关系(relationships)作为边,形成一个相互连接的知识网络。 知识图谱的核心特点:实…

实用指南:[创业之路-645]:手机属于通信?还是属于消费类电子?还是移动互联网?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【开题答辩过程】以《基于SpringBoot+Vue+uni-app的智慧校园服务系统的设计与搭建》为例,不会开题答辩的可能进来看看

【开题答辩过程】以《基于SpringBoot+Vue+uni-app的智慧校园服务系统的设计与搭建》为例,不会开题答辩的可能进来看看pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

c 网站开发案例专业网络推广方案

C语言acm竞赛习题集锦.doc杭州电子科技大学 acm 习题精选 第 1 页 共 21 页 目录 1、 数塔问题 2 2、 并查集类问题 4 3、 递推类问题 9 4、 动态规划系列 10 5、 概率类题型 13 6、 组合数学类题型 15 7、 贪心策略 16 8、 几何问题 .19 杭州电子科技大学 acm 习题精选 第 2 页…

丽水做网站公司本地电脑做服务器建网站

0x00 简介本期主要会教大家如何从流量中还原出来文件。下面我将会用多种办法来讲解。使用系统&#xff1a;Kali Linux0x01 tcpxtract工具网络流量提取文件(方法1)Kali Linux默认没有安装该工具&#xff0c;需要自己安装安装命令&#xff1a;sudo apt install tcpxtract使用方法…

微信ipad协议个微机器人开发API

微信ipad协议个微机器人开发API,微信群机器人API 微信iPad协议,采用最新的ASE加密,以及最新的算法,iPad协议是一套微信个人号接口,基于web开发,它能实现微信中的百分之八十的功能,并辅助微信执行各种操作,提供…