发布 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
如您所知,所有允许我们使用最新最强大的 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 Store 要求。
为此,我们要特别感谢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 核心团队
PS: 和往常一样,我们想提醒大家,React Native 仍处于 0.x 版本,因为还有许多更改正在进行中——所以请记住,在升级时,是的,可能仍然会崩溃或出现问题。请在问题中和提交 PR 时互相帮助——并记住遵守CoC:屏幕的另一边总是一个人。