简体中文
鸿蒙系统有很多原生API,这些API通过ArkTS来调用。
由于uts可以编译为ArkTS,所以uts可以调用鸿蒙的所有原生API。
如需在uni-app中使用,就需要把鸿蒙的原生API封装为uts插件,然后在uni-app中使用。
这些uts插件,是同时兼容uni-app和uni-app x的。
但目前仅uni-app支持鸿蒙next,uni-app x还需过段时间。
uni-app中开发者的逻辑是编译为js,js无法直接调用鸿蒙原生API。而uts插件是编译为ets文件,所以可以调用鸿蒙原生API。(ArkTS的文件后缀为.ets)
UTS 插件是 uni-app 扩展API的标准插件形式 详情
uts插件在编译到harmonyOS端时会被编译成ArkTs代码。因此编写代码时应注意遵循 uts规范
和 ets规范
。
无论是uts还是arkTs都是在ts的语法基础上进行扩展来的。建议先阅读如下文档
ArkTs内不能使用any类型,但是uts内any用处比较多,因此在编译为ArkTs时,any类型被转为了Object类型。
ArkTs不允许无类型的对象字面量,编写代码时应注意在需要类型时为对象字面量指定类型。如未指定类型,uts会将此对象字面量编译成as UTSJSONObject
的形式。
// 源码
const obj = {
a: 1
}
// 编译结果
const obj = {
a: 1
} as UTSJSONObject
// 源码
interface Obj {
a: number
}
const obj: Obj = {
a: 1
}
//或
const obj = {
a: 1
} as Obj
// 编译结果
class Obj { ... }
const obj: Obj = {
a: 1
}
//或
const obj = {
a: 1
} as Obj
uts插件的utssdk/app-harmony/config.json
文件内可以配置依赖,配置方式如下:
{
"dependencies": {
"@cashier_alipay/cashiersdk": "15.8.26", // ohpm依赖
"local-deps": "./libs/local-deps.har" // 本地依赖
}
}
注意
utssdk/app-harmony/libs/local-deps.har
。uts 插件内包含了一个resources目录,用于存放插件的资源文件,如图片、字体等,关于resources的更多信息请参考:鸿蒙资源分类与访问。此目录位于utssdk/app-harmony/resources
。
很多harmonyOS原生接口需要传入context作为参数。多数情况下可以直接调用harmonyOS全局方法getContext()
获取。例如:
import settings from '@ohos.settings';
const context: Context = getContext();
settings.getValue(context, settings.display.SCREEN_BRIGHTNESS_STATUS, (err, value) => {
if (err) {
console.error(`Failed to get the setting. ${err.message} `);
return;
}
console.log(`SCREEN_BRIGHTNESS_STATUS: ${JSON.stringify(value)}`)
});