跳到主内容

发布 0.56

·阅读时长 6 分钟
Lorenzo Sciandra
Drivetribe 的核心维护者和 React Native 开发者

期待已久的 React Native 0.56 版本现已发布 🎉。这篇博文重点介绍了新版本中引入的一些变更。我们也想借此机会解释自三月以来我们一直在忙些什么。

破坏性变更的困境,或者说,“何时发布?”

贡献者指南》解释了 React Native 所有变更都要经历的集成过程。该项目由许多不同的工具组成,需要协调和持续支持才能保持一切正常运行。再加上为项目贡献的活跃开源社区,你就能体会到这一切令人难以置信的规模了。

随着 React Native 的广泛采用,必须非常谨慎地进行破坏性变更,而这个过程并非如我们所愿般顺利。我们决定跳过四月和五月的发布,以便核心团队集成和测试一组新的破坏性变更。专门的社区沟通渠道在此期间被使用,以确保耐心等待稳定版本的开发者能够尽可能无障碍地采用 2018 年 6 月 (0.56.0) 版本。

0.56.0 版本完美吗?不,就像所有软件一样:但我们达到了一个权衡点,即“等待更稳定”与“测试带来了成功结果,我们可以向前推进”之间,我们觉得已经准备好发布它了。此外,我们意识到最终 0.56.0 版本中还有一些未解决问题。大多数开发者在升级到 0.56.0 时应该不会遇到问题。对于那些因上述问题而受阻的开发者,我们希望在我们的讨论中看到你们的身影,并期待与你们一起解决这些问题。

你可以将 0.56.0 视为迈向更稳定框架的基础:在广泛采用一两周后,所有边缘情况应该都能被解决,这将为更好的 2018 年 7 月 (0.57.0) 版本奠定基础。

本节最后,我们要感谢所有 67 位贡献者,他们总共提交了 818 次提交 (!),这将帮助你的应用变得更好 👏。

现在,言归正传...

重大变更

Babel 7

您可能知道,用于帮助我们使用最新、最棒的 JavaScript 特性的转译工具 Babel 即将升级到v7。由于新版本带来了一些重要变更,我们认为现在是升级的好时机,这将使Metro能够利用其改进

如果在升级过程中遇到问题,请参阅相关的文档部分

现代化 Android 支持

在 Android 方面,许多周边工具链已发生变化。我们已更新到Gradle 3.5Android SDK 26Fresco 1.9.0 和 OkHttp 3.10.0,甚至将NDK API 目标设为 API 16。这些变更应该能顺利进行,并加快构建速度。更重要的是,这将帮助开发者遵守下个月生效的新 Play Store 要求

与此相关的是,我们要特别感谢Dulmandakh为此提交的众多 PR,使之成为可能 👏。

在此方向上还需要采取更多步骤,您可以在专门的 issue 中(以及JSC 的一个附属 issue 中)关注 Android 支持更新的未来计划和讨论。

新的 Node、Xcode、React 和 Flow – 天哪!

Node 8 现在是 React Native 的标准版本。它实际上已经在测试中,但由于 Node 6 进入维护模式,我们全面推进了 Node 8 的采用。React 也更新到了 16.4 版本,带来了大量修复。

我们正在放弃对 iOS 8 的支持,使 iOS 9 成为可针对的最低 iOS 版本。我们预计这不会成为问题,因为任何可以运行 iOS 8 的设备都可以升级到 iOS 9。这一变更使我们能够移除为运行 iOS 8 的旧设备实现变通方法的很少使用的代码。

持续集成工具链已更新至使用 Xcode 9.4,确保所有 iOS 测试都在 Apple 提供的最新开发者工具上运行。

我们已升级到Flow 0.75,以使用许多开发者赞赏的新错误格式。我们还为更多组件创建了类型定义。如果您的项目尚未强制执行静态类型检查,请考虑使用 Flow 在编码时而非运行时识别问题。

还有很多其他内容...

例如,YellowBox 已被新的实现替换,极大地改善了调试体验。

有关完整的发布说明,请参考此处的完整更新日志。并记住密切关注升级指南,以避免迁移到此新版本时出现问题。


最后一点:从本周开始,React Native 核心团队将恢复每月会议。我们会确保让大家了解会议内容,并保留您的反馈,以便在未来的会议中考虑。

祝大家编码愉快!

LorenzoRyan 以及整个React Native 核心团队

附言:一如既往,我们想提醒大家,React Native 仍处于 0.x 版本阶段,因为还有许多变更正在进行中 - 所以升级时请记住,是的,可能仍然会有崩溃或损坏的情况。在 issue 中和提交 PR 时互相帮助 - 并且记住遵守强制执行的行为准则 (CoC):屏幕的另一边始终是人。