随着假期临近,我们很高兴宣布今年的最后一次 NativeScript 版本发布——NativeScript 5.1。此新版本包含许多很棒的新功能,例如
--hmr
改善调试markingMode: none
让我们来看看这些新功能。
Google Play 商店中最有趣的新功能之一是 Android 应用捆绑包。此功能允许您根据架构自动拆分软件包,并向您的用户交付经过优化的软件包,以最大程度地减小其大小。
到目前为止,这 是可能的在 NativeScript 中,通过在您的 gradle 文件中执行一些额外的任务。现在,这是开箱即用的,因此您可以专注于重要的事情。例如,对于使用 TypeScript 的简单 NativeScript Hello-World 应用,下载的 apk 大小现在比不使用捆绑包构建的应用小近 50%。
YARN 越来越受欢迎,因为它具有卓越的性能和一些其他方便的功能。在 NativeScript 5.1 中,由于 Miguel Flores Silverio 和 Daniel Diaz,所有 NativeScript 用户可以在 NPM 或 YARN 之间选择用于其包管理。您可以像下面这样轻松切换现有项目
tns package-manager set yarn
注意:要将您的包管理器切换到 yarn
,您需要安装 yarn
。有关 yarn
及其文档的更多信息,请访问 YARN 官方网站。
在过去的两个版本中,我们专注于优化开发 <-> 测试迭代,并最大限度地减少开发人员在等待更改在设备或模拟器上可见的时间。NativeScript 5.1 在此领域提供了一批新的改进。
首先,当您更改模板或 CSS 文件时,您的 NativeScript 调试会话将不再中断。此外,使用此版本,tns debug android --hmr
命令将启动调试会话,如果您更改 JavaScript/TypeScript 代码、CSS 或组件模板,您将在几秒钟内看到这些更新,而无需重新启动调试会话,并且应用程序不会丢失应用程序的状态。
如果您痴迷于为移动设备构建精美的图表,NativeScript 的 RadChart 控件可以帮助您。我们为自定义添加了另一个选项,现在条形图中的颜色可以自定义。您可以使用操作系统提供的默认颜色,以更好地与原生外观和感觉融为一体,也可以使用您自己的颜色并对其进行调整以适应您的设计。
以下仅更新 nativescript-ui-chart 包后获得的差异一段时间前,我们在 Android 运行时引入了一个实验性选项 markingMode: none
。该选项可以提高性能,并在流畅页面转换和平滑滚动是必须要求且难以实现时提供帮助。
在过去的一年中,我们收到了许多来自使用该选项的用户的好评。但是,在某些罕见情况下,此选项会导致应用程序发生零星崩溃,这与速度慢的应用程序一样不可取。所有这些都让我们相信,应该开始一项重大工作,将此选项作为框架的正式支持功能。
它从 NativeScript 团队提供的插件开始,在此版本中,我们花费了大量时间来确保这些插件的兼容性。接下来,我们将专注于制作内容并指导社区如何才能使所有其他插件也兼容。有关此方面的更多信息将在不久后公布。截至目前,NativeScript 团队提供的所有插件都应该可以安全地与 markingMode: none
一起使用,并且所有演示都已经使用此选项。
我们发布了一个方便的小插件,它可以直接访问以控制具有 5.1 的设备的亮度。例如,当您要显示条形码或二维码并提高扫描仪的可读性时,它可能很有用。
该插件可以在 市场 中找到。与往常一样,欢迎您在 插件的 GitHub 存储库 中提出各种改进和建议。
作为可以实现的简单演示,我们创建了这个完全不切实际但超级棒的跳舞手机 🙂
我们知道,发布应用程序后最重要的任务之一是监控其运行状况并解决用户面临的问题。我们知道这可能很困难,从本版本开始,我们正在发起一项倡议,以在您选择的错误报告服务中提供可操作且信息丰富的错误报告。
从现在开始,随着每个版本的发布,我们将发布 NativeScript 框架的 dSYM 包。它将作为 GitHub 中相应版本标签的资产上传(例如,https://github.com/NativeScript/ios-runtime/releases/tag/v5.1.0)。您可以使用它来使 {N} iOS 运行时的本机调用在崩溃转储中可读。为此,您必须将其上传到 iTunes Dev Console 或 Firebase Crashlytics 上的 Crashlytics,或您使用的任何崩溃分析服务。
有关 dSYM 及其在调用堆栈符号化中的作用的详细文档可在 TN2151 了解和分析应用程序崩溃报告 中找到。
感谢为 5.1 版本做出贡献的 NativeScript 社区成员。