92的博客

解决 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

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »