React Native 0.80 开始支持 iOS 预构建

React Native 又发布新版本了,近来 React Native 的更新速度越来越频繁,想来也许距离 1.0 版本应该不远了🤪,而本次 0.80 也来带来了一个全新的支持: iOS Prebuilds ,而这个尝试可以说是对于 React Native 在 iOS平台的的未来至关重要。

React Native 0.80 是第一个可以将 React Native for iOS 部分作为预构建版本发布的版本,核心目的是希望帮助减少构建时间,但是在我看来,解决时间只是次要,提高编译成功率才是这个更改的核心价值

在过去构建 React Native iOS 的时候,在首次原生构建会需要比较长的构建时间,这是因为需要编译整个 React Native iOS 代码及其所有依赖项。

而在 0.80 版本里,官方选择了 Folly 和 GLog 等这些部分稳定且编译耗时的基础库进行预构建,以此作为技术验证并,当然,这里也提到了只有部分,比如 Folly 和 GLog :

  • Folly 主要用于 JS 和原生代码之间的通信, 提供底层支持,优化数据处理和内存管理
  • GLog 是 Google 开发的日志记录库,RN 使用它来记录和调试底层的 C++ 代码

而等后续新架构稳定、API 边界清晰、并且二进制分发流程得到充分验证后,官方会将 React Native 自身的核心库也迁移到预构建模式,最终实现整个框架的二进制化分发,例如 React-cxxreact、React-jsi、ReactCommon 等。

而如前面的代码所示,在 React Native 发布过程中,会有一个 ReactNativeDependencies.xcframework 的 XCFramework,它是 React Native 所依赖的第三方依赖项的预构建版本,而在 Xcode 执行编译链接时,它会直接链接这些已经编译好的 XCFrameworks。

从官方目前提供的数据看,在 M4 芯片的机器上,使用预构建依赖项的 iOS 构建速度比从源码构建大约快 12% :

当然,更重要的是可以减少开发者的本地环境(如 Xcode 版本、Clang 版本、系统库、CocoaPods 版本等)带来的构建失败,毕竟在 React Native 社区里,用户报告的许多 iOS 构建问题主要源于第三方依赖项的编译失败或配置错误:

而如果后续大部分依赖都通过官方预构建,就可以提前讲将这些潜在的问题在依赖项分发之前就解决掉,从而减少了因环境差异导致的构建失败,进而 RN 的开发体验。

相信 RN 开发者对于跑不起来这件事···深有体会。

而由于这个功能目前处于实验阶段,因此默认情况下是未启用,如果想使用可以通过添加 RCT_USE_RN_DEP 环境变量来安装 pod:

ini 复制代码
RCT_USE_RN_DEP=1 bundle exec pod install

或者通过修改 Podfile 来强制:

ruby 复制代码
if linkage != nil
  Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
  use_frameworks! :linkage => linkage.to_sym
end
​
+ENV['`RCT_USE_RN_DEP`'] = '1'
​
target 'HelloWorld' do
  config = use_native_modules!

可以预想到,在未来如果 RN 能提供大量的 iOS 预构建支持,那么莫名其妙的构建失败将会大大减少,至少你不会再遇到新来的同事问你:"为什么这个项目我一 run 就报错" ?

参考链接:

相关推荐
IT乐手13 分钟前
java 或 安卓项目中耗时统计工具类
android·java
wang_hao..16 分钟前
Day4.AndroidAudio初始化
android·音频
mldong22 分钟前
推荐一款超高颜值的后台管理模板!Art-Design-Pro!开源!免费!
前端·vue.js·架构
草字25 分钟前
uniapp 如果进入页面输入框自动聚焦,此时快速返回页面或者跳转到下一个页面,输入法顶上来的页面出现半屏的黑屏问题。
java·前端·uni-app
程序视点1 小时前
Wise Duplicate Finder 重复文件查找工具 - 永久免费专业版文件去重工具
前端·windows
维尔切1 小时前
Linux中ssh远程登录原理与配置
android·linux·ssh
一点一木1 小时前
🚀 2025 年 07 月 GitHub 十大热门项目排行榜 🔥
前端·人工智能·github
脑袋大大的2 小时前
uni-app x开发避坑指南:拯救被卡顿的UI线程!
开发语言·前端·javascript·vue.js·ui·uni-app·uts
louisgeek2 小时前
Android Media3 PlayerView 监听 SurfaceTextureListener
android
ayas123192 小时前
CSS学习
前端·css·学习