NativeScript 8.2 带来了新的功能,对核心和运行时的广泛内存优化,一些错误修复,以及对最新 iOS(Xcode 13.3/iOS 15.4 版本)和 Android 工具(Android API 32 以及 gradle 7)的支持。
此版本在过去几个月预发布阶段获得了社区的极大参与,这极大地帮助了团队,谢谢。
更新到任何次要或主要版本的 NativeScript 都从安装最新的 cli 开始
npm install -g nativescript
然后,您可以使用以下命令确认最新安装的版本
ns -v
您应该至少看到 8.2.0
或更高版本。如果您没有看到最新安装的版本,请检查您的 node、npm 或 yarn 全局设置。
您现在可以在您的项目中运行以下命令
ns migrate
各种项目依赖项现在应该已更新。
最后,确保您的项目是干净的
ns clean
注意:CLI 与旧项目一起使用,因此始终建议运行最新的 CLI,无论您项目的特定版本如何。
以下是一些您在成功迁移后可能会使用的依赖项
"dependencies": {
"@nativescript/core": "~8.2.0"
},
"devDependencies": {
"@nativescript/android": "~8.2.0",
"@nativescript/ios": "~8.2.0",
"@nativescript/types": "~8.2.0",
"@nativescript/webpack": "~5.0.6"
}
包含了一些高级别细节
ns typings android --aar
(除了 --jar
)ns clean
删除的文件夹(通过 pathsToClean
)或包含其他文件夹(通过 additionalPathsToClean
),例如import { NativeScriptConfig } from '@nativescript/core';
export default {
// ...
cli: {
/**
* Optional - Override the files or paths to clean when running the `ns clean` command
*/
pathsToClean: ['node_modules', 'package-lock.json', 'yarn.lock'],
/**
* Optional - Additional files or paths to clean when running the `ns clean` command, the paths are appended to the default list of paths.
*/
additionalPathsToClean: ['dist']
},
} as NativeScriptConfig;
查看 完整的更改日志。
在 8.2 中,核心收到了一些新功能、错误修复和性能优化。
介绍新的 TouchManager,它提供了快速轻松地为您的应用程序添加精美的抛光效果的能力,并在触摸按下/抬起时提供良好的 UX 反馈。
例如,您可以通过在应用程序引导之前(通常在 app.ts
或 main.ts
中)启用 TouchManager.enableGlobalTapAnimations
,轻松快速地在每个具有 tap
事件绑定的视图上启用一致的触摸按下/抬起动画。
import { TouchManager, CoreTypes } from '@nativescript/core'
// define prior to your app bootstrap call (typically `app.ts` or `main.ts`):
TouchManager.enableGlobalTapAnimations = true;
TouchManager.animations = {
down: {
scale: { x: 0.95, y: 0.95 },
duration: 120,
curve: CoreTypes.AnimationCurve.easeInOut
},
up: {
scale: { x: 1, y: 1 },
duration: 120,
curve: CoreTypes.AnimationCurve.easeInOut
}
};
// bootstrap the app...
这将自动为具有 tap
绑定的任何视图在触摸按下和抬起时使用这些特定动画进行动画。
如果您有一些需要忽略的“可点击”视图
<Button text="Global tap animations simply ignored" ignoreTouchAnimation="true" />
您还可以通过声明式地定义任何特定视图上的自定义触摸动画(这将覆盖任何全局 TouchManager 设置)来指定它自己的 touchAnimation
属性
<Button touchAnimation="{{ touchAnimation }}" />
这将使用以下视图绑定设置对触摸按下和抬起进行动画
touchAnimation = {
down: {
scale: { x: 0.95, y: 0.95 },
backgroundColor: new Color('yellow'),
duration: 250,
curve: CoreTypes.AnimationCurve.easeInOut,
},
up: {
scale: { x: 1, y: 1 },
backgroundColor: new Color('#63cdff'),
duration: 250,
curve: CoreTypes.AnimationCurve.easeInOut,
},
}
添加了一个新属性 testID
,用于 e2e(端到端)集成测试。以前,automationText
通常被使用,但它可能会干扰 8.0 中添加的 a11y 属性,因此 testID
有助于标准化所有 e2e 测试以及避免常见的陷阱。您可以从 8.2 及更高版本开始使用 testID
进行所有 e2e 视图识别。此属性仅在运行集成测试时激活,因此绝不会干扰应用程序的正常运行。
要启用 testID
,您可以将 --env.e2e
传递给构建命令,它将被启用。
在字体和文本归属处理以及 Image
处理方面确定了几个关键区域,这些区域经过优化,从而产生了一些很好的内存优化增强功能。这也包括修复了关闭模态时的内存回收问题。
这使我们能够支持尾风 3,它广泛使用了这种格式。
例如:rgb(255, 255, 255 / 0.2)
例如
getRootLayout()
.open(view, {
shadeCover: {
color: 'linear-gradient(to top, #fff, rgba(0, 0, 0, .7))',
如果您一直在针对较新的 Android SDK 或设备,您可能会在使用 content://
uri 时遇到问题。8.2 现在在幕后使用相同的现有文件 API 正确处理了这些问题。
围绕使用 Vanilla NativeScript 的用户进行了一些改进,这些改进涉及绑定表达式 - 请参阅这些 PR 说明以获取详细信息
以下是一些其他亮点的概览
这仅仅是核心更改的概览 - 查看 完整的更改日志。
在 8.2 中,还包含了额外的内存优化,以及对运行时进行修改,使其能够开始用于其他多样化的项目开发中。
此版本支持 Xcode 13.3 和 iOS 15.4(以及之前的版本)。
有关更改的完整列表,请参阅 完整的更改日志
在 8.2 中,最新的 Android Studio 工具、SDK 和构建工具现在已正式支持。此外
__drainMicrotaskQueue
全局变量console.time
使用 3 位精度有关更改的完整列表,请参阅 完整的更改日志
app/src/main/AndroidManifest.xml:24:3-36:14 Error:
android:exported needs to be explicitly specified for element . Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://android-docs.cn/guide/topics/manifest/activity-element#exported for details.
Execution failed for task ':app:processDebugMainManifest'.
Manifest merger failed : android:exported needs to be explicitly specified for element . Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://android-docs.cn/guide/topics/manifest/activity-element#exported for details.
更新您的 App_Resources/Android/src/main/AndroidManifest.xml
并将 android:exported="true"
添加到 <activity>
标签中。
为了准备 iOS 15.4 和 Android 12+(以及更多 androidx),您将在最新的类型中找到这两个新 API
⚡⚡⚡
此外,我们更进一步,通过将 iOS 类型从 >20,000 个声明优化到 ~8,000 个,优化了 iOS 类型,使您的 TypeScript 编辑器变得非常轻便 - 除了升级到 8.2 以获得此改进之外,您无需做任何操作。我们将在未来继续优化这些类型。
如果您是插件开发者或只是需要完整的完整集合,您可以包含所有 >20,000 个声明,方法如下
/// <reference path="@nativescript/types-ios/src/complete.d.ts" />
--env.e2e
支持,与核心中的新 testID
属性配合使用您可以在 此处查看版本的发布说明。
我们发布了 @nativescript/[email protected]
以正式支持 Tailwind CSS 3.x。查看 @nativescript/tailwind 文档 中关于如何设置它的说明。
除了不断解决错误以及优化传递之外,我们还将提到未来几个版本中的一些更广泛的目标
对于 8.3,我们计划推出 node 的 fs
API 作为完全支持的 API,使 NativeScript 的文件处理尽可能接近 node 的文件 API。这是为了在 node/JS 生态系统中普遍推广标准文件 API 的努力的一部分(无论平台如何)。
对于 9.0,我们将把 @nativescript/core
中的 ui
部分拆分为自己的包,以便为更广泛的平台 UI 适应性/使用做好准备,并继续优化核心库。
您是否曾经想过创建主要或次要版本的 NativeScript 版本需要哪些步骤?
对于每个主要或次要版本,从下一个 8.3 版本开始,TSC 将在每个发布周期中随机选择一个条目,让某人与我们一起创建下一个主要或次要版本。我们发现每次的过程都很深刻且引人入胜,并且希望让其他人有机会深入了解 OSS 的维护和可持续性。
无论您是新手还是老手,都可以通过填写 此表格 来添加您的姓名,我们将在全年的 3 个月窗口内随机选择。每个选择者都将收到一些小礼物,并可以确保与国际 TSC 合作准备下一个版本将是一段美好的时光。
NativeScript 办公时间每月在第一个星期一(除非另有说明)太平洋标准时间上午 11 点通过我们的 社区 Discord 提供。
如果您是编程领域的初学者,我们邀请您与开源维护者进行坦诚的非正式聊天,这些维护者充满热情、关怀并且易于交流。
这些将是非正式的 AMA(问答)环节,您可以有机会与开源维护者和专业人士交谈,涵盖从编写第一行代码到管理开源项目,再到为雇主和客户构建深入的用户体验等一切内容。
资源
感谢您为可持续的开源未来投资。
请联系我们的任何 合作伙伴 以获得帮助。
我们要感谢我们优秀的社区,感谢他们持续的投入、贡献和支持。感谢那些通过测试我们的预发布版本、报告问题和贡献修复来帮助塑造 8.2 版本的人。❤️