Expo鸿蒙双SDK适配工程化,从能跑走向敢用

针对 Expo 官方不支持鸿蒙生态的问题,开发者团队通过开源 CLI 工具实现 Expo 项目在 HarmonyOS 上的运行。文章详细介绍了该工具从单 SDK 支持到双 SDK 并行、再到工程化护栏...

互联网/IT

在移动应用开发领域,Expo 作为一款流行的跨平台框架,为开发者提供了便捷的开发体验。然而,当 HarmonyOS(鸿蒙)生态逐渐壮大时,Expo 官方并未提供直接支持,导致大量使用 Expo 的项目难以迁移到鸿蒙平台。为此,一位开发者团队通过自研开源工具,成功打通了 Expo 到鸿蒙的适配路径。

从单 SDK 到双 SDK:适配的演进

两年前,团队首次尝试将 Expo 项目适配至鸿蒙系统,当时仅支持 Expo SDK 52(对应 React Native 0.77.1)。但随着 Expo 生态的快速迭代,SDK 54(React Native 0.82)版本发布后,新旧版本并存的局面让开发者面临选择困境。为此,团队在 1.4.0 版本中引入了双 SDK 支持,允许开发者根据需求选择 SDK 52 或 SDK 54 进行项目创建与迁移。

这一功能的实现并非简单的参数切换,而是涉及多层级的版本适配。例如,补丁文件按 SDK 分目录管理(如 content/patches/sdk-52/),鸿蒙原生模板也分版本维护(templates/harmony-sdk-52/)。这种精细化的设计确保了不同 SDK 版本的独立性和稳定性。

工程化护栏:提升开发者信心

在适配过程中,一个关键挑战是如何保护用户的手写代码不被工具覆盖。为此,团队在 1.2.0 版本中引入了一套“强迫症”级的机制。具体而言,CLI 对托管文件(如 RNOHPackagesFactory.ets/.h、oh-package.json5)进行严格监控,一旦检测到手动修改,相关操作(如 sync、install、uninstall)将自动拦截,从而避免意外覆盖。

此外,团队还特别设计了自定义原生 Package 注册流程,确保用户自主管理的代码区域完全不受 CLI 干预。这种边界感的设计显著提升了开发者对工具的信任度,使其能够放心地将 CLI 用于生产环境。

技术细节与未来展望

当前版本的工具已支持 Expo SDK 54 的完整工作流,包括 prebuild、run 和 start 等官方命令。同时,团队也在积极解决一些遗留问题,例如 expo-image 组件的 Harmony 后端适配。预计在下一版本中,这些功能将得到完善。

文章配图

值得注意的是,尽管工具已具备强大的适配能力,但团队仍强调其定位是“官方不做的事”,即专注于填补官方生态的空白。这种清晰的角色定位使得工具既能紧跟 Expo 官方的迭代步伐,又能灵活应对鸿蒙生态的独特需求。

行业影响与价值

Expo 鸿蒙双 SDK 适配工具的推出,不仅解决了开发者在跨平台迁移中的痛点,也为鸿蒙生态的繁荣注入了新的动力。通过降低开发门槛,该工具吸引了更多 Expo 开发者加入鸿蒙阵营,进一步丰富了鸿蒙应用市场的内容。

未来,随着鸿蒙系统的持续发展,类似的适配工具可能会成为连接不同生态的重要桥梁。这不仅是技术层面的创新,更是推动跨平台生态融合的关键一步。