跳到主要内容

发布 0.56

·5 分钟阅读
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 商店要求

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

在这个方向上还需要采取更多步骤,您可以关注 专门的问题中关于更新 Android 支持的未来规划和讨论(以及关于 JSC 的一个相关问题)。

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

Node 8 现在是 React Native 的标准。实际上它已经在测试中了,但是随着 Node 6 进入维护模式,我们已经全力推进。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 核心团队

PS: 与往常一样,我们要提醒大家,React Native 仍然处于 0.x 版本,因为仍然有很多更改正在进行中 - 所以请记住,升级时,是的,可能仍然会有一些东西崩溃或损坏。在问题和提交 PR 时互相帮助 - 并记住遵守强制执行的 CoC:屏幕的另一边始终是真人。