跳到主要内容

发布 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 个 commit(!),这些提交将使您的应用程序变得更好 👏。

现在,话不多说...

重大更改

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,从而使之成为可能 👏。

在这一方向上还需要采取一些进一步的措施,您可以在专用 issue(以及关于JSC的附带 issue)中跟踪 Android 支持更新的未来规划和讨论。

新的 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 核心团队

附注:一如既往,我们想提醒大家,React Native 仍处于 0.x 版本,因为仍有许多更改正在进行中——所以请记住,在升级时,是的,很可能仍然会遇到崩溃或损坏的情况。请在 issue 和提交 PR 时互相帮助——并请记住遵守强制执行的行为准则:屏幕的另一边总是一个活生生的人。