新闻详情

新闻详情

首页 / 资讯中心 / 详情

Morphe Patches架构深度剖析:150个补丁如何用patches与extensions两大模块组织

发布时间:2026/11/12 16:16:30来源:尧图网络
Morphe Patches架构深度剖析:150个补丁如何用patches与extensions两大模块组织
Morphe Patches架构深度剖析150个补丁如何用patches与extensions两大模块组织【免费下载链接】morphe-patchesMorphe Patches项目地址: https://gitcode.com/gh_mirrors/mo/morphe-patchesMorphe Patches 是一个面向 Android 应用YouTube、YouTube Music、Reddit的补丁工程当前 v1.44.0 共提供150 个补丁。它的核心架构可以用一句话概括patches模块负责怎么打补丁extensions模块负责打进去的代码长什么样。本文带你完整拆解这套组织方式。150个补丁是怎么分布的补丁数量来自官方 README.md 的补丁清单由发布流程自动生成对应机器可读的 patches-list.json目标应用补丁数补丁所在目录 YouTube84patches/.../youtube/、extensions/youtube/ YouTube Music42patches/.../music/、extensions/music/ Reddit20patches/.../reddit/、extensions/reddit/ 通用Universal4patches/.../all/、extensions/all/也就是说补丁按目标应用分域两个模块内部用完全对称的目录结构对应找任何一个补丁都能一眼定位到它的两侧代码。两大模块的分工patches 管怎么打extensions 管打什么 patches 模块用 Kotlin 编写的补丁定义patches/下有447 个 Kotlin 文件每个补丁定义都遵循统一模板声明补丁名称与描述会同步到 README 与 patches-list.json声明依赖dependsOn和兼容包compatibleWith在execute { }块中定位目标代码并插入指令定位代码靠的是Fingerprint指纹——按方法签名、访问标志、字节码指令序列画像而不是写死类名这样 App 升级后依然能匹配到目标。例如 YouTube 进度条相关补丁的指纹集合Fingerprints.kt目录按应用/功能域两级组织如patches/src/main/kotlin/app/morphe/patches/ ├── all/ # 通用补丁克隆应用、禁用商店更新等 ├── music/ # 歌词、交叉淡入、下载等 42 项 ├── reddit/ # 字体、广告、侧边栏等 20 项 ├── shared/ # 跨应用共享逻辑主题、防篡改、PoToken… └── youtube/ # 84 个补丁细分到 seekbar、swipecontrols… extensions 模块真正注入 App 的代码extensions/下有556 个 Java/Kotlin 文件这些代码会被编译、混淆后塞进目标 APK运行期由补丁插入的指令调用。它有 6 个子模块子模块职责all/通用扩展如修改安装包版本号youtube/YouTube 补丁实现 设置界面Settings.javamusic/音乐补丁实现含歌词46 个文件、下载、打歌记录等reddit/Reddit 补丁实现与设置界面shared/跨应用共享代码环境检查、请求工具、主题、翻译shared-youtube/YouTube 系共享能力SponsorBlock、Rtd 点赞/点踩、OAuth2 等此外各模块还带一个stub/目录如 extensions/youtube/stub/存放 Cronet、Litho 等目标 App 内部 API 的空壳类声明让扩展代码在编译期就能看到这些类而不需要依赖 App 本体。一个补丁的完整旅程两侧代码如何会师以禁用双击跳转章节补丁为例看一次完整协作补丁侧DisableChapterSkipDoubleTapPatch.kt先用 Fingerprint 在 App 字节码中找到目标方法然后插入一条 smali 指令——invoke-static { p1 }, Lapp/morphe/extension/youtube/patches/DisableDoubleTapActionsPatch;-disableDoubleTapChapters(Z)Z扩展侧DisableDoubleTapActionsPatch.java提供一个静态方法disableDoubleTapChapters(original)内部读取用户在 Morphe 设置里的开关值返回最终结果。┌─────────────────── patches构建期 ───────────────────┐ │ Fingerprint 定位 → 插入 invoke-static 调用 → 注入开关设置项 │ └──────────────────────────┬──────────────────────────────┘ ▼ ┌─────────────────── extensions运行期 ──────────────────┐ │ 静态方法读取 Settings 开关 → 返回改写后的布尔值 │ └──────────────────────────────────────────────────────────┘YouTube Music 的交叉淡入Crossfade功能则是更复杂的双播放器实现其功能说明横幅也打包在补丁资源里随补丁一起分发构建系统与配套文件构建入口settings.gradle.kts 声明了app.morphe.patches插件补丁框架统一设置扩展命名空间app.morphe.extension和 ProGuard 混淆规则 extensions/proguard-rules.pro发布产物patches-bundle.json 记录版本号与下载地址patches-list.json 是自动化生成的补丁元数据名称、描述、依赖、兼容版本供第三方工具消费历史档案archive/ 保留了上游 ReVanced 工程的压缩包NOTICE 与 LICENSE 说明了其 ReVanced 分支渊源与 GPLv3 附加条款。总结为什么这种组织值得借鉴关注点分离——补丁逻辑何时改、改哪里与业务实现改成什么样完全解耦新增一个功能 加一个.kt补丁 一个静态方法指纹驱动——靠字节码指纹而非硬编码定位天然抗 App 小版本升级对称目录——patches与extensions按应用一一对应556 447 个文件依然可检索、可维护。理解了这套patches 定义 extensions 实现的双模块模式你就能顺着任意一个补丁名在两棵目录树里快速找到它的完整实现。【免费下载链接】morphe-patchesMorphe Patches项目地址: https://gitcode.com/gh_mirrors/mo/morphe-patches创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉