跳到主要内容

宣布 React Native 0.66 版本发布

· 阅读需 5 分钟
Luna Wei
Luna Wei
Software Engineer @ Meta

今天我们发布了 React Native v0.66,支持 Android 12 和 iOS 15,同时修复了若干问题并进行了常规更新。

亮点​

处理 Android 上父视图边界外子视图的点击事件​

感谢 @hsource 添加了对通过 overflow: visible 渲染在父视图边界外的子视图交互支持。这是一个常见用例,使 React Native 在 Android 上的表现更贴近网页标准。

更多细节请查看该条 pull request。

Android 新的蓝牙权限​

我们新增了对Android 12 蓝牙权限的支持,计划在下一版本中将 targetSDKVersion 更新至 31。

更好的 Apple Silicon、Xcode 13 和 iOS 15 支持​

本次发布带来了多种解决方案,使得在 Apple Silicon (M1) Mac 机器上使用 Xcode 构建 iOS 应用更加稳定可靠。

值得一提的是,新的应用模板现加入了 CocoaPods 相关的变通方案(感谢 @mikehardy!)。 使用时,请确保您的应用的 Podfile 在 post_install 阶段添加了 __apply_Xcode_12_5_M1_post_install_workaround(installer)。

同时,RCT-Folly.podspec 已更新以防止 arm64 链接失败。

请查阅我们之前发布的关于准备您的应用以支持 iOS 15 和 Android 12 的相关文章。

Hermes 0.9.0​

Hermes 0.9.0 主要缩小了 Hermes 版本发布节点与本次 React Native 版本之间的差距。

在大约 400 个提交中,除了常规的 bug 修复,还带来了内存和体积优化。

详情请见 Hermes 0.9.0 发布 issue。

夜间构建版本和“Commitly”版本​

在近期的博客文章中,我们提到 2021 年下半年目标之一是提升发布流程的速度和稳定性。作为此项工作的组成部分,我们致力于让 React Native 在主分支上更加稳定,减少 RC(Release Candidate)阶段发现的 bug。

虽然我们已经发布夜间版本(nightly)一年多了,但这些版本此前并未被大多数项目有效地利用。现在它们更易获取,我们希望未来将其用于发布候选版本。夜间版本通过 npm 的 “nightly” 标签发布。

为了提升单个提交的测试流程,React Native 的 CI 现会为主分支、发布分支及每个 PR 创建 tarball 工件,我们称之为 commitlies。这些 commitlies 不会发布到 npm,但可以直接从 CircleCI 下载。详情请看下方说明。

想协助 PR 合并吗?通过尝试相关的 commitly 并验证变更,您将提供宝贵信息,帮助变更顺利落地!

使用夜间构建版本 (Nightlies)​

将项目迁移到 React Native 夜间版本的流程与升级到常规版本类似,唯一例外是类似 Upgrade Helper 这类工具目前不支持夜间版本。建议先将项目升级到最新稳定版本,再运行 yarn upgrade react-native@nightly 以安装最新版夜间版本。请注意,使用夜间版本时可能还需额外修改项目以确保正常运行。

使用 Commitly 版本 (Commitlies)​

来自 CircleCI 产物面板的截图,用于查找 tarball

找到与某个提交相关的“build_npm_package-1”任务,然后前往“Artifacts”面板下载该 commitly 的 tarball。

同样地,确保您的项目已升级至最新稳定版本。然后,访问 react-native 在 CircleCI 的仪表盘,查找由相关提交触发的工作流。找到名为 build_npm_package 的任务,该任务会有一个“Artifacts”面板,提供可用于下载 tarball 文件的链接。下载后可执行:

# 使用您的包管理器将 react-native 依赖更新为 tarball 版本
$ yarn add <tarball 文件路径>
$ npm add <tarball 文件路径>

致谢​

本次版本包含 621 次提交,由 92 位贡献者 共同完成!感谢所有新老贡献者的付出!完整更新日志请点击这里。

同时感谢以下贡献者协助此次版本的准备、测试与障碍排查!