RN适配鸿蒙踩坑日记(三)

1,208 阅读2分钟

在适配 React Native 项目到鸿蒙时,使用了 react-native-splash-screen 来实现启动页效果。本地开发测试一切正常,但当代码交付给同事后,iOS 端却直接无法启动,报错如下:

RNSplashScreen.h not found

这起初让我摸不着头脑,因为三端(iOS、Android、HarmonyOS)在我的本地开发环境都能正常运行。于是,问题排查之旅开始了。


问题排查过程

  1. 检查依赖是否安装完整
    起初怀疑是同事忘了运行 pod install,于是让他重新执行。然而问题依然存在,iOS 构建失败。

  2. 发现 Pod 版本不一致
    在对比同事与我的环境时,注意到同事的 react-native-splash-screen 安装的 Pod 版本与我本地的不一致。 深入分析发现,问题的原因是鸿蒙适配包 @react-native-oh-tpl/react-native-splash-screen 的目录下保留了一个 podspec 文件。pod install 时,CocoaPods 误选了这个错误的 podspec,而非我们需要的官方版本。最终导致构建失败。

  3. 为何本地没有问题?
    回忆后发现,我本地开发的操作顺序是先 pod install,然后才安装 react-native-oh-tpl 相关依赖。这一顺序使得 Pod 没有去查找错误的 podspec,而直接使用了正确的 react-native-splash-screen
    而同事那边是全新安装,直接安装了带有冲突的依赖,因此问题暴露。


解决方案

最终的解决方案是手动删除鸿蒙适配包中的错误 podspec 文件

rm -rf node_modules/react-native-oh-tpl/react-native-splash-screen/react-native-splash-screen.podspec

删除这个错误的 podspec 文件后,重新执行 pod install,确保引入正确的 react-native-splash-screen,问题彻底解决。


经验总结

  1. 检查 Podfile.lock 是排查 iOS 构建问题的重要环节
    当面对类似 header not found 的问题时,Podfile.lock 能帮助我们快速定位问题所在。

  2. 关注鸿蒙适配包的潜在影响
    鸿蒙适配包在三端开发中非常重要,但某些包可能会意外影响已有依赖。建议定期检查它们是否引入了多余文件。

  3. 依赖安装顺序会影响结果
    本地开发顺利并不代表其他环境也能正常运行,尤其是全新安装的场景,需要格外注意。