发布 0.56 版本
期待已久的 React Native 0.56 版本现已发布 🎉。这篇博文重点介绍了此新版本中引入的一些 更改。我们还想借此机会解释自 3 月以来我们一直在忙些什么。
重大更改的难题,或者,“何时发布?”
《贡献者指南》解释了 React Native 所有更改都经过的集成流程。该项目由 许多不同的工具组成,需要协调和持续的支持才能确保一切正常运行。再加上积极活跃的开源社区回馈项目,你就能感受到其令人难以置信的规模。
随着 React Native 令人印象深刻的采用率,重大更改必须谨慎进行,而且这个过程并不像我们希望的那样顺利。我们决定跳过 4 月份和 5 月份的版本发布,以便核心团队能够集成和测试一组新的重大更改。专门的社区沟通渠道在此过程中一直被使用,以确保 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
你可能知道,Babel 是一种转译工具,它允许我们使用 JavaScript 的最新功能,Babel 即将发布 v7 版本。由于这个新版本带来了一些重要的更改,我们觉得现在是升级的好时机,允许 Metro 利用其改进。
如果你在升级过程中遇到问题,请参考 与之相关的文档部分。
现代化 Android 支持
在 Android 上,许多周围的工具都发生了变化。我们已更新至 Gradle 3.5、Android SDK 26、Fresco 1.9.0 和 OkHttp 3.10.0,甚至 NDK API 目标到 API 16。这些更改应该不会出现问题,并且可以加快构建速度。更重要的是,它将帮助开发者遵守 下个月生效的新 Play 商店要求。
关于这一点,我们特别感谢 Dulmandakh 为此提交的许多 PR 👏。
在这个方向上还需要采取一些步骤,你可以在 专门的问题(以及 JSC 的一个相关问题)中关注未来规划和更新 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 核心团队将恢复每月会议。我们会确保让大家了解会议内容,并确保在未来的会议中收集大家的反馈。
祝大家编码愉快!
Lorenzo、Ryan 和整个 React Native 核心团队
附注:与往常一样,我们想提醒大家,React Native 仍处于 0.x 版本,因为还有许多更改正在进行中 - 因此,在升级时请记住,可能某些内容仍然会崩溃或出现问题。在遇到问题或提交 PR 时,请互相帮助 - 并请记住遵守 行为准则:屏幕的另一端总是有一个真人。