解决 HyperOS 日历/通讯录不同步:手动提取并制作 GMS 补丁
用于HyperOS系统的日历同步模块发布
观前提醒:以下内容全为AI(Gemini Pro3)生成
最近在折腾主力机(Redmi K60 Pro)的 HyperOS 3.0 (Android 15) 时,遇到了国产 ROM 的老毛病:虽然内置了谷歌框架,但阉割了 Google 通讯录同步 和 日历同步 适配器。导致通讯录无法云同步,日历也没法和 Gmail 联动,非常不便。
为了解决这个问题,我决定“自给自足”,从类原生体验最好的 Xiaomi.eu ROM 包中提取出原生的同步组件。
过程比想象中曲折,特此记录一下从固件解包到制作补丁的全过程。
🛠️ 提取过程:解包
这次的目标文件位于 super.img 分区下的 product 镜像中。由于 Xiaomi.eu 的包采用了分卷压缩且带有特殊的偏移量,传统的 Windows 工具全部歇菜。
最终在 WSL (Windows Subsystem for Linux) 环境下,通过以下步骤成功提取:
合并分卷:由于固件被分割为 super.img.0 - super.img.9 等 10 个独立 Sparse 分卷,直接拼接会损坏数据。
转换格式:利用 simg2img 将分卷合并并转换为 Raw 格式镜像。
修复头部偏移 (Magic Fix):这是最坑的一步。转换后的镜像头部有 4KB (4096 bytes) 的全 0 填充,导致 lpunpack 无法识别 Magic Number。
解决方法:使用 dd 命令将 4096 位置的文件头“移花接木”覆盖到文件开头 (Offset 0),成功修复分区表。
解包与挂载:使用修复后的镜像,通过 lpunpack 解出 product.img,并识别出其为 EROFS 文件系统,挂载后成功提取目标文件。
📦 提取产物
最终提取到的核心组件如下(位于 /system/product/app/):
GoogleContactsSyncAdapter (通讯录同步)
GoogleCalendarSyncAdapter (日历同步)
GoogleLocationHistory (位置记录)
📲 兼容性与食用方法
经实测,这套组件在 HyperOS 3.0 (Android 15) 上完美运行。我将其整理成了标准的目录结构(类似 Magisk 模块),可以直接刷入或手动放入对应目录。
目录结构:
system/
└── product/
└── app/
├── GoogleCalendarSyncAdapter
├── GoogleContactsSyncAdapter
└── GoogleLocationHistory⚡ 激活小技巧(划重点): 刷入重启后,同步功能可能不会立即出现。经过测试,有一个玄学但有效的激活方法:
去 Play 商店下载官方的 Google 日历 App。
打开并登录账号,等待数据加载。
卸载 刚刚下载的 Google 日历 App。
此时,系统底层的同步适配器就会被“唤醒”,你可以去“设置 -> 账号与同步 -> Google”里看到久违的联系人和日历同步开关了!
📥 下载
https://github.com/SherlockChiang/HyperOS_Sync_Patch/releases/tag/Release_20251228