返回博客首页
← 所有文章

宣布发布 NativeScript 3.2

2017年9月8日 — 作者:Alexander Vakrilov

又一天,又一个伟大的 NativeScript 版本发布!3.2 版本已经发布(也就是在 npm 上)。请确保使用 npm install -g nativescript 更新以获取最新版本。

以下是此版本的亮点

支持 Xcode9 和 iOS 11

iOS 11(也许还有新的 iPhone 8?)即将到来!它将非常火爆,很快就会出现在每台 iOS 设备上。但更重要的是——您将能够在其上运行 NativeScript 应用程序。事实上,您甚至可以立即尝试,因为在 3.2 版本中,我们正式支持 Xcode 9 和 iOS 11。

沿着这些思路,我们对与构建过程相关的 NativeScript CLI 做了一些改进。构建输出现在简洁得多——打印相关信息并减少混乱。我们还利用了 Xcode 的 allowProvisioningUpdates 选项,该选项将在提供 team-id 时自动创建团队管理的配置文件。

使用 Webpack 的 Web Worker

接下来,您现在可以在使用 webpack 构建时使用 Web Worker!您可以使用 nativescript-worker-loader 在构建 webpack 时加载 Web Worker 脚本。此加载器应与 NativeScriptWorkerPlugin 一起使用。有关如何设置和使用它的详细说明,请参阅 nativescript-worker-loader 自述文件

众多错误修复

自 3.1.0 版本发布以来,我们修复了 50 多个错误和问题!以下是一些值得注意的修复

  • 修复了“使用 AdHoc 或 AppStore 配置文件时,iOS 归档导出出现意外行为” #3020(感谢 Peter Staev!);
  • 在 Android 中向前导航时,Android 视图默认会被缓存。此功能应该会带来性能提升,尤其是在 Android 中向后导航时;
  • 添加了 Blur 和 Focus 事件(感谢 Eddy!);
  • 与 Vue 集成相关的 V8 GC 修复;
  • 设置脚本 中修复了几个错误,使它们在不同的用例和环境中更加可靠;
  • 许多其他与 NativeScript 核心模块和 CLI 相关的稳定性修复。

Android 的新实验性 GC 模式

如果您阅读过 Panayot Cankov 关于性能的博文,您可能会记得在 V8 GC 传递期间触发的 MarkReachableObjects() 例程,以及它可能需要超过 0.5 秒才能完成(在 Angular 中甚至可能长达 1 秒)。基本上,它所做的是确保 Java 实例在 JavaScript 端仍然需要时不会被 Java GC 过早地回收。我们注意到,这很少需要——只有在没有其他对 Java 实例的引用并且作用域是唯一应该保持引用的东西的情况下才会出现。事实上,tns-core-modules 中的代码编写方式使其不依赖于作用域来保留这些 Java 实例的引用。

我们引入了一个标志,您可以将其设置为禁用 MarkReachableObjects。您只需在 app/package.json 中添加以下内容即可


{
  "android": {
    "markingMode": "none"
  }
}

请注意,此标志是**高度实验性的**。尽管我们已使用相当多的应用程序对其进行了测试,并且我们非常有信心它不会导致 tns-core-modules 出现问题,但它可能会由于您正在使用的某些应用程序代码或插件而导致意外崩溃。

那么最好的方法是什么?您可以尝试启用它,看看您是否体验到性能优势或任何意外行为或崩溃。您可以在此处 了解更多详细信息(包括一些性能测量)。

分享您的反馈

我们希望您喜欢这个新版本,并且如果您遇到任何问题,请在我们的 Github 问题页面 上告知我们!同时,请务必查看 NativeScript 路线图,因为我们很快就会更新它以展示未来几个版本中将发布的内容。快乐 NativeScripting!