' +
+ '
字体大小35px,行高45px
' +
+ '
' +
+ '
这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
';
build() {
- Flex({direction: FlexDirection.Column,alignItems: ItemAlign.Center,
- justifyContent: FlexAlign.Center }){
+ Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center,
+ justifyContent: FlexAlign.Center }) {
RichText(this.data)
- .onStart(()=>{
- console.info("RichText onStart")
- })
- .onComplete(()=>{
- console.info("RichText onComplete")
- })
+ .onStart(() => {
+ console.info('RichText onStart');
+ })
+ .onComplete(() => {
+ console.info('RichText onComplete');
+ })
}
}
}
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-gestures-swipegesture.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-gestures-swipegesture.md
index 2216f2cf7e4daa15269b34e8c9a9adb8d457793e..7e5706a19f443340a02512f055539332cd6f3e8c 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-basic-gestures-swipegesture.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-gestures-swipegesture.md
@@ -16,7 +16,7 @@ SwipeGesture(value?: { fingers?: number; direction?: SwipeDirection; speed?: num
| 参数名称 | 参数类型 | 必填 | 参数描述 |
| -------- | -------- | -------- | -------- |
| fingers | number | 否 | 触发滑动的最少手指数,默认为1,最小为1指,最大为10指。
默认值:1 |
-| direction | SwipeDirection | 否 | 触发滑动手势的滑动方向。
默认值:SwipeDirection.All |
+| direction | [SwipeDirection](#swipedirection枚举说明) | 否 | 触发滑动手势的滑动方向。
默认值:SwipeDirection.All |
| speed | number | 否 | 识别滑动的最小速度(默认为100VP/秒)。
默认值:100 |
## SwipeDirection枚举说明
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-container-badge.md b/zh-cn/application-dev/reference/arkui-ts/ts-container-badge.md
index 1e68ee635c0ec903f556bbf68342ca5a57438b07..f1bc8b9ee610cc20aec1a496a8a9a44a81514a4e 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-container-badge.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-container-badge.md
@@ -18,7 +18,7 @@
## 接口
-方法1:Badge(value: {count: number, position?: BadgePosition, maxCount?: number, style: BadgeStyle})
+**方法1:** Badge(value: {count: number, position?: BadgePosition, maxCount?: number, style: BadgeStyle})
创建数字标记组件。
@@ -26,35 +26,38 @@
| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- |
| count | number | 是 | - | 设置提醒消息数。 |
-| position | BadgePosition | 否 | BadgePosition.RightTop | 设置提示点显示位置。 |
+| position | [BadgePosition](#badgeposition枚举说明) | 否 | BadgePosition.RightTop | 设置提示点显示位置。 |
| maxCount | number | 否 | 99 | 最大消息数,超过最大消息时仅显示maxCount+。 |
-| style | BadgeStyle | 是 | - | Badge组件可设置样式,支持设置文本颜色、尺寸、圆点颜色和尺寸。 |
+| style | [BadgeStyle](#badgestyle对象说明) | 是 | - | Badge组件可设置样式,支持设置文本颜色、尺寸、圆点颜色和尺寸。 |
-方法2: Badge(value: {value: string, position?: BadgePosition, style: BadgeStyle})
+**方法2:** Badge(value: {value: string, position?: BadgePosition, style: BadgeStyle})
根据字符串创建标记组件。
-- 参数
- | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
- | -------- | -------- | -------- | -------- | -------- |
- | value | string | 是 | - | 提示内容的文本字符串。 |
- | position | BadgePosition | 否 | BadgePosition.RightTop | 设置提示点显示位置。 |
- | style | BadgeStyle | 是 | - | Badge组件可设置样式,支持设置文本颜色、尺寸、圆点颜色和尺寸。 |
-
-- BadgeStyle对象说明
- | 名称 | 类型 | 必填 | 默认值 | 描述 |
- | -------- | -------- | -------- | -------- | -------- |
- | color | [ResourceColor](ts-types.md) | 否 | Color.White | 文本颜色。 |
- | fontSize | number \| string | 否 | 10 | 文本大小。 |
- | badgeSize | number \| string | 是 | - | badge的大小。 |
- | badgeColor | [ResourceColor](ts-types.md) | 否 | Color.Red | badge的颜色。 |
-
-- BadgePosition枚举说明
- | 名称 | 描述 |
- | -------- | -------- |
- | RightTop | 圆点显示在右上角。 |
- | Right | 圆点显示在右侧纵向居中。 |
- | Left | 圆点显示在左侧纵向居中。 |
+**参数:**
+
+| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
+| -------- | -------- | -------- | -------- | -------- |
+| value | string | 是 | - | 提示内容的文本字符串。 |
+| position | [BadgePosition](#badgeposition枚举说明) | 否 | BadgePosition.RightTop | 设置提示点显示位置。 |
+| style | [BadgeStyle](#badgestyle对象说明) | 是 | - | Badge组件可设置样式,支持设置文本颜色、尺寸、圆点颜色和尺寸。 |
+
+## BadgeStyle对象说明
+
+| 名称 | 类型 | 必填 | 默认值 | 描述 |
+| -------- | -------- | -------- | -------- | -------- |
+| color | [ResourceColor](ts-types.md) | 否 | Color.White | 文本颜色。 |
+| fontSize | number \| string | 否 | 10 | 文本大小。 |
+| badgeSize | number \| string | 是 | - | badge的大小。 |
+| badgeColor | [ResourceColor](ts-types.md) | 否 | Color.Red | badge的颜色。 |
+
+## BadgePosition枚举说明
+
+| 名称 | 描述 |
+| -------- | -------- |
+| RightTop | 圆点显示在右上角。 |
+| Right | 圆点显示在右侧纵向居中。 |
+| Left | 圆点显示在左侧纵向居中。 |
## 示例
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-container-flex.md b/zh-cn/application-dev/reference/arkui-ts/ts-container-flex.md
index 26381f6cf835559a6b6d1bd4d392772a039b081d..7dbc84e4eb1c0b9cf3e0165503d8e95c8efa3f1a 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-container-flex.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-container-flex.md
@@ -242,8 +242,6 @@ struct FlexExample4 {

-
-
```ts
// xxx.ets
@Component
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-container-scroll.md b/zh-cn/application-dev/reference/arkui-ts/ts-container-scroll.md
index 4dadcc663fc36e9375eec8e830cade16ceb5cc57..4768ef64f18bc63f33b96c1cd1a927ad46585afd 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-container-scroll.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-container-scroll.md
@@ -28,7 +28,7 @@ Scroll(scroller?: Scroller)
| scrollBar | [BarState](ts-appendix-enums.md#barstate) | 设置滚动条状态。
默认值:BarState.Off |
| scrollBarColor | string \| number \| Color | 设置滚动条的颜色。 |
| scrollBarWidth | string \| number | 设置滚动条的宽度。 |
-| edgeEffect | [EdgeEffect](ts-appendix-enums.md#edgeeffect) | 设置滑动效果,目前支持的滑动效果参见EdgeEffect的枚举说明。
默认值:EdgeEffect.Spring |
+| edgeEffect | [EdgeEffect](ts-appendix-enums.md#edgeeffect) | 设置滑动效果,目前支持的滑动效果参见EdgeEffect的枚举说明。
默认值:EdgeEffect.None |
## ScrollDirection枚举说明
| 名称 | 描述 |
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-circle.md b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-circle.md
index a3f690f5f5e7a8fa685b33d0906939d319d1501c..4da279cc7c27cfb55c8f441f0d5906496351d128 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-circle.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-circle.md
@@ -17,28 +17,28 @@
Circle(options?: {width?: string | number, height?: string | number})
- 参数
- | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
- | -------- | -------- | -------- | -------- | -------- |
- | width | string \| number | 否 | 0 | 宽度。 |
- | height | string \| number | 否 | 0 | 高度。 |
+ | 参数名 | 参数类型 | 必填 | 参数描述 |
+ | -------- | -------- | -------- | -------- |
+ | width | string \| number | 否 | 宽度。
默认值:0 |
+ | height | string \| number | 否 | 高度。
默认值:0 |
## 属性
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
-| 参数名称 | 参数类型 | 默认值 | 必填 | 参数描述 |
-| -------- | -------- | -------- | -------- | -------- |
-| fill | [ResourceColor](ts-types.md) | Color.Black | 否 | 设置填充区域颜色。 |
-| fillOpacity | number \| string \| [Resource](ts-types.md#resource类型) | 1 | 否 | 设置填充区域透明度。 |
-| stroke | [ResourceColor](ts-types.md) | Color.Black | 否 | 设置线条颜色。 |
-| strokeDashArray | Array<Length> | [] | 否 | 设置线条间隙。 |
-| strokeDashOffset | number \| string | 0 | 否 | 线条绘制起点的偏移量。 |
-| strokeLineCap | [LineCapStyle](ts-appendix-enums.md#linecapstyle) | LineCapStyle.Butt | 否 | 设置线条端点绘制样式。 |
-| strokeLineJoin | [LineJoinStyle](ts-appendix-enums.md#linejoinstyle) | LineJoinStyle.Miter | 否 | 设置线条拐角绘制样式。 |
-| strokeMiterLimit | number \| string | 4 | 否 | 设置锐角绘制成斜角的极限值。 |
-| strokeOpacity | number \| string \| [Resource](ts-types.md#resource类型) | 1 | 否 | 设置线条透明度。 |
-| strokeWidth | Length | 1 | 否 | 设置线条宽度。 |
-| antiAlias | boolean | true | 否 | 是否开启抗锯齿效果。 |
+| 参数名称 | 参数类型 | 必填 | 参数描述 |
+| -------- | -------- | -------- | -------- |
+| fill | [ResourceColor](ts-types.md) | 否 | 设置填充区域颜色。
默认值:Color.Black |
+| fillOpacity | number \| string \| [Resource](ts-types.md#resource类型) | 否 | 设置填充区域透明度。
默认值:1 |
+| stroke | [ResourceColor](ts-types.md) | 否 | 设置线条颜色。
默认值:Color.Black |
+| strokeDashArray | Array<Length> | 否 | 设置线条间隙。
默认值:[] |
+| strokeDashOffset | number \| string | 否 | 线条绘制起点的偏移量。
默认值:0 |
+| strokeLineCap | [LineCapStyle](ts-appendix-enums.md#linecapstyle) | 否 | 设置线条端点绘制样式。
默认值:LineCapStyle.Butt |
+| strokeLineJoin | [LineJoinStyle](ts-appendix-enums.md#linejoinstyle) | 否 | 设置线条拐角绘制样式。
默认值:LineJoinStyle.Miter |
+| strokeMiterLimit | number \| string | 否 | 设置锐角绘制成斜角的极限值。
默认值:4 |
+| strokeOpacity | number \| string \| [Resource](ts-types.md#resource类型) | 否 | 设置线条透明度。
默认值:1 |
+| strokeWidth | Length | 否 | 设置线条宽度。
默认值:1 |
+| antiAlias | boolean | 否 | 是否开启抗锯齿效果。
默认值:true |
## 示例
@@ -49,12 +49,18 @@ Circle(options?: {width?: string | number, height?: string | number})
@Component
struct CircleExample {
build() {
- Flex({ justifyContent: FlexAlign.SpaceAround }) {
+ Column({ space: 10 }) {
// 绘制一个直径为150的圆
Circle({ width: 150, height: 150 })
- // 绘制一个直径为150的圆
- Circle().width(150).height(150)
- }.width('100%').margin({ top: 5 })
+ // 绘制一个直径为150、线条为红色虚线的圆环(宽高设置不一致时以短边为直径)
+ Circle()
+ .width(150)
+ .height(200)
+ .fillOpacity(0)
+ .strokeWidth(3)
+ .stroke(Color.Red)
+ .strokeDashArray([1, 2])
+ }.width('100%')
}
}
```
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-ellipse.md b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-ellipse.md
index 6558f3733f669d7a05500e802d68d35c0715cacc..6825c18b27042263f7d1f3d585e51df7cc104c0c 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-ellipse.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-ellipse.md
@@ -50,12 +50,17 @@ ellipse(options?: {width?: string | number, height?: string | number})
@Component
struct EllipseExample {
build() {
- Flex({ justifyContent: FlexAlign.SpaceAround }) {
- // 在一个 150 * 80 的矩形框中绘制一个椭圆
+ Column({ space: 10 }) {
+ // 绘制一个 150 * 80 的椭圆
Ellipse({ width: 150, height: 80 })
- // 在一个 150 * 80 的矩形框中绘制一个椭圆
- Ellipse().width(150).height(80)
- }.width('100%').margin({ top: 5 })
+ // 绘制一个 150 * 100 、线条为蓝色的椭圆环
+ Ellipse()
+ .width(150)
+ .height(100)
+ .fillOpacity(0)
+ .stroke(Color.Blue)
+ .strokeWidth(3)
+ }.width('100%')
}
}
```
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-line.md b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-line.md
index 99d75d06f4f6976e0317af603f3103dbb7b11f8b..b9059c4c36e6fb7f1642633b3402fb3a5f7b178a 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-line.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-line.md
@@ -24,17 +24,17 @@ Line(value?: {width?: string | number, height?: string | number})
**参数:**
-| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
+| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- |
-| width | string \| number | 否 | 0 | 宽度。 |
-| height | string \| number | 否 | 0 | 高度。 |
+| width | string \| number | 否 | 0 | 宽度。 |
+| height | string \| number | 否 | 0 | 高度。 |
## 属性
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
-| 参数名称 | 参数类型 | 默认值 | 必填 | 参数描述 |
+| 参数名称 | 参数类型 | 默认值 | 必填 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- |
| startPoint | Array<Length> | [0, 0] | 否 | 直线起点坐标点(相对坐标),单位vp。 |
| endPoint | Array<Length> | [0, 0] | 否 | 直线终点坐标点(相对坐标),单位vp。 |
@@ -59,13 +59,31 @@ Line(value?: {width?: string | number, height?: string | number})
@Component
struct LineExample {
build() {
- Column() {
- Line().startPoint([0, 0]).endPoint([50, 100])
- Line({ width: 50, height: 50 }).startPoint([0, 0]).endPoint([100, 100])
- Line().width(200).height(200).startPoint([50, 50]).endPoint([150, 150])
- }.margin({ top: 5 })
+ Column({ space: 10 }) {
+ // 线条绘制的起止点坐标均是相对于Line组件本身绘制区域的坐标
+ Line()
+ .startPoint([0, 0])
+ .endPoint([50, 100])
+ .backgroundColor('#F5F5F5')
+ Line()
+ .width(200)
+ .height(200)
+ .startPoint([50, 50])
+ .endPoint([150, 150])
+ .strokeWidth(5)
+ .stroke(Color.Orange)
+ .strokeOpacity(0.5)
+ .backgroundColor('#F5F5F5')
+ // 当坐标点设置的值超出Line组件的宽高范围时,线条会画出组件绘制区域
+ Line({ width: 50, height: 50 })
+ .startPoint([0, 0])
+ .endPoint([100, 100])
+ .strokeWidth(3)
+ .strokeDashArray([1, 3])
+ .backgroundColor('#F5F5F5')
+ }
}
}
```
-
+
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-path.md b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-path.md
index 372b056e1951d565b0bf50f566526cebcd26cf4e..5929aa6c23a2eab7ad9b5cf08584b635cebf41cc 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-path.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-path.md
@@ -67,24 +67,75 @@ commands支持的绘制命令如下:
@Component
struct PathExample {
build() {
- Column({ space: 5 }) {
- Text('Straight line').fontSize(9).fontColor(0xCCCCCC).width('90%')
- // 绘制一条长900px,宽3vp的直线。
- Path().width(300).height(10).commands('M0 0 L900 0').stroke(Color.Black).strokeWidth(3)
-
- Text('Straight line graph').fontSize(9).fontColor(0xCCCCCC).width('90%')
- Flex({ justifyContent: FlexAlign.SpaceAround }) {
- Path().width(100).height(100).commands('M150 0 L300 300 L0 300 Z')
- Path().width(100).height(100).commands('M0 0 H300 V300 H0 Z')
- Path().width(100).height(100).commands('M150 0 L0 150 L60 300 L240 300 L300 150 Z')
+ Column({ space: 10 }) {
+ Text('Straight line')
+ .fontSize(11)
+ .fontColor(0xCCCCCC)
+ .width('90%')
+ // 绘制一条长900px,宽3vp的直线
+ Path()
+ .width(300)
+ .height(10)
+ .commands('M0 0 L900 0')
+ .stroke(Color.Black)
+ .strokeWidth(3)
+
+ Text('Straight line graph')
+ .fontSize(11)
+ .fontColor(0xCCCCCC)
+ .width('90%')
+ // 绘制直线图形
+ Row({ space: 20 }) {
+ Path()
+ .width(100)
+ .height(100)
+ .commands('M150 0 L300 300 L0 300 Z')
+ .fillOpacity(0)
+ .stroke(Color.Black)
+ .strokeWidth(3)
+ Path()
+ .width(100)
+ .height(100)
+ .commands('M0 0 H300 V300 H0 Z')
+ .fillOpacity(0)
+ .stroke(Color.Black)
+ .strokeWidth(3)
+ Path()
+ .width(100)
+ .height(100)
+ .commands('M150 0 L0 150 L60 300 L240 300 L300 150 Z')
+ .fillOpacity(0)
+ .stroke(Color.Black)
+ .strokeWidth(3)
}.width('100%')
- Text('Curve graphics').fontSize(9).fontColor(0xCCCCCC).width('90%')
- Flex({ justifyContent: FlexAlign.SpaceAround }) {
- Path().width(100).height(100).commands("M0 300 S150 0 300 300 Z")
- Path().width(100).height(100).commands('M0 150 C0 150 150 0 300 150 L150 300 Z')
+ Text('Curve graphics').fontSize(11).fontColor(0xCCCCCC).width('90%')
+ // 绘制弧线图形
+ Row({ space: 20 }) {
+ Path()
+ .width(100)
+ .height(100)
+ .commands("M0 300 S150 0 300 300 Z")
+ .fillOpacity(0)
+ .stroke(Color.Black)
+ .strokeWidth(3)
+ Path()
+ .width(100)
+ .height(100)
+ .commands('M0 150 C0 150 150 0 300 150 L150 300 Z')
+ .fillOpacity(0)
+ .stroke(Color.Black)
+ .strokeWidth(3)
+ Path()
+ .width(100)
+ .height(100)
+ .commands('M0 200 A30 20 20 0 0 250 200 Z')
+ .fillOpacity(0)
+ .stroke(Color.Black)
+ .strokeWidth(3)
}
- }.width('100%').margin({ top: 5 })
+ }.width('100%')
+ .margin({ top: 5 })
}
}
```
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-polygon.md b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-polygon.md
index f526142d55f80e3579842f0ae32d75fffdddd667..cb1f6803ae97b70c086b64d4fba4498a9ebaf576 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-polygon.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-polygon.md
@@ -18,17 +18,17 @@ Polygon(value?: {width?: string | number, height?: string | number})
**参数:**
-| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
+| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- |
-| width | string \| number | 否 | 0 | 宽度。 |
-| height | string \| number | 否 | 0 | 高度。 |
+| width | string \| number | 否 | 0 | 宽度。 |
+| height | string \| number | 否 | 0 | 高度。 |
## 属性
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
-| 参数名称 | 参数类型 | 默认值 | 必填 | 参数描述 |
+| 参数名称 | 参数类型 | 默认值 | 必填 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- |
| points | Array<Point> | [] | 否 | 多边形的顶点坐标列表。 |
| fill | [ResourceColor](ts-types.md) | Color.Black | 否 | 设置填充区域颜色。 |
@@ -60,18 +60,25 @@ Polygon(value?: {width?: string | number, height?: string | number})
@Component
struct PolygonExample {
build() {
- Column({ space: 5 }) {
- Flex({ justifyContent: FlexAlign.SpaceAround }) {
- // 在 100 * 100 的矩形框中绘制一个三角形,起点(0, 0),经过(50, 100),终点(100, 0)
- Polygon({ width: 100, height: 100 }).points([[0, 0], [50, 100], [100, 0]])
- // 在 100 * 100 的矩形框中绘制一个四边形,起点(0, 0),经过(0, 100)和(100, 100),终点(100, 0)
- Polygon().width(100).height(100).points([[0, 0], [0, 100], [100, 100], [100, 0]])
- // 在 100 * 100 的矩形框中绘制一个五边形,起点(50, 0),依次经过(0, 50)、(20, 100)和(80, 100),终点(100, 50)
- Polygon().width(100).height(100).points([[50, 0], [0, 50], [20, 100], [80, 100], [100, 50]])
- }.width('100%')
- }.margin({ top: 5 })
+ Column({ space: 10 }) {
+ // 在 100 * 100 的矩形框中绘制一个三角形,起点(0, 0),经过(50, 100),终点(100, 0)
+ Polygon({ width: 100, height: 100 })
+ .points([[0, 0], [50, 100], [100, 0]])
+ .fill(Color.Green)
+ // 在 100 * 100 的矩形框中绘制一个四边形,起点(0, 0),经过(0, 100)和(100, 100),终点(100, 0)
+ Polygon().width(100).height(100)
+ .points([[0, 0], [0, 100], [100, 100], [100, 0]])
+ .fillOpacity(0)
+ .strokeWidth(5)
+ .stroke(Color.Blue)
+ // 在 100 * 100 的矩形框中绘制一个五边形,起点(50, 0),依次经过(0, 50)、(20, 100)和(80, 100),终点(100, 50)
+ Polygon().width(100).height(100)
+ .points([[50, 0], [0, 50], [20, 100], [80, 100], [100, 50]])
+ .fill(Color.Red)
+ .fillOpacity(0.6)
+ }.width('100%').margin({ top: 10 })
}
}
```
-
+
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-polyline.md b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-polyline.md
index f9f3b2f766918fbc83dd81bc8733b7b12f68a5c5..dd862ca6184c0d4684a4f3c0677380ec79e8b4f9 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-polyline.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-polyline.md
@@ -18,19 +18,19 @@ Polyline(value?: {width?: string | number, height?: string | number})
**参数:**
-| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
+| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- |
-| width | string \| number | 否 | 0 | 宽度。 |
-| height | string \| number | 否 | 0 | 高度。 |
+| width | string \| number | 否 | 0 | 宽度。 |
+| height | string \| number | 否 | 0 | 高度。 |
## 属性
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
-| 参数名称 | 参数类型 | 默认值 | 必填 | 参数描述 |
+| 参数名称 | 参数类型 | 默认值 | 必填 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- |
-| points | Array<Point> | [] | 否 | 折线经过坐标点列表。 |
+| points | Array<Point> | [] | 否 | 折线经过坐标点列表。 |
| fill | [ResourceColor](ts-types.md) | Color.Black | 否 | 设置填充区域颜色。 |
| fillOpacity | number \| string \| [Resource](ts-types.md#resource类型) | 1 | 否 | 设置填充区域透明度。 |
| stroke | [ResourceColor](ts-types.md) | Color.Black | 否 | 设置线条颜色。 |
@@ -59,16 +59,28 @@ Polyline(value?: {width?: string | number, height?: string | number})
@Component
struct PolylineExample {
build() {
- Column({ space: 5 }) {
- Flex({ justifyContent: FlexAlign.SpaceAround }) {
- // 在 100 * 100 的矩形框中绘制一段折线,起点(0, 0),经过(20,60),到达终点(100, 100)
- Polyline({ width: 100, height: 100 }).points([[0, 0], [20, 60], [100, 100]])
- // 在 100 * 100 的矩形框中绘制一段折线,起点(0, 0),经过(0,100),到达终点(100, 100)
- Polyline().width(100).height(100).points([[0, 0], [0, 100], [100, 100]])
- }.width('100%')
- }.margin({ top: 5 })
+ Column({ space: 10 }) {
+ // 在 100 * 100 的矩形框中绘制一段折线,起点(0, 0),经过(20,60),到达终点(100, 100)
+ Polyline({ width: 100, height: 100 })
+ .points([[0, 0], [20, 60], [100, 100]])
+ .fillOpacity(0)
+ .stroke(Color.Blue)
+ .strokeWidth(3)
+ // 在 100 * 100 的矩形框中绘制一段折线,起点(20, 0),经过(0,100),到达终点(100, 90)
+ Polyline()
+ .width(100)
+ .height(100)
+ .fillOpacity(0)
+ .stroke(Color.Red)
+ .strokeWidth(8)
+ .points([[20, 0], [0, 100], [100, 90]])
+ // 设置折线拐角处为圆弧
+ .strokeLineJoin(LineJoinStyle.Round)
+ // 设置折线两端为半圆
+ .strokeLineCap(LineCapStyle.Round)
+ }.width('100%')
}
}
```
-
+
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-rect.md b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-rect.md
index 108921f4a45dd147b2c2a8dfbbf630b5acfa66be..a7582c53b2ea630fda8cde04b89174273ccab123 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-rect.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-rect.md
@@ -58,19 +58,30 @@ Rect(value?: {width?: string | number,height?: string | number,radius?: string |
@Component
struct RectExample {
build() {
- Column({ space: 5 }) {
- Text('normal').fontSize(9).fontColor(0xCCCCCC).width('90%')
- // 绘制90% * 50矩形
+ Column({ space: 10 }) {
+ Text('normal').fontSize(11).fontColor(0xCCCCCC).width('90%')
+ // 绘制90% * 50的矩形
Rect({ width: '90%', height: 50 })
- // 绘制90% * 50矩形
- Rect().width('90%').height(50)
-
- Text('with rounded corners').fontSize(9).fontColor(0xCCCCCC).width('90%')
- // 绘制90% * 50矩形, 圆角宽高20
- Rect({ width: '90%', height: 50 }).radiusHeight(20).radiusWidth(20)
- // 绘制90% * 50矩形, 圆角宽高20
- Rect({ width: '90%', height: 50 }).radius(20)
- }.width('100%').margin({ top: 5 })
+ .fill(Color.Pink)
+ // 绘制90% * 50的矩形框
+ Rect()
+ .width('90%')
+ .height(50)
+ .fillOpacity(0)
+ .stroke(Color.Red)
+ .strokeWidth(3)
+
+ Text('with rounded corners').fontSize(11).fontColor(0xCCCCCC).width('90%')
+ // 绘制90% * 80的矩形, 圆角宽高分别为40、20
+ Rect({ width: '90%', height: 80 })
+ .radiusHeight(20)
+ .radiusWidth(40)
+ .fill(Color.Pink)
+ // 绘制90% * 80的矩形, 圆角宽高为20
+ Rect({ width: '90%', height: 80 })
+ .radius(20)
+ .fill(Color.Pink)
+ }.width('100%').margin({ top: 10 })
}
}
```
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-shape.md b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-shape.md
index 502c54c40e5c3d5ffdee4834b6c654f8abd7d032..ac8e3eb10f828f85a6fd8fdfa364fee75a9ca1a2 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-shape.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-drawing-components-shape.md
@@ -23,9 +23,9 @@ Shape(value?: PixelMap)
**参数:**
-| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
+| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- |
-| value | PixelMap | 否 | - | 绘制目标,可将图形绘制在指定的PixelMap对象中,若未设置,则在当前绘制目标中进行绘制。 |
+| value | PixelMap | 否 | - | 绘制目标,可将图形绘制在指定的PixelMap对象中,若未设置,则在当前绘制目标中进行绘制。 |
## 属性
@@ -50,67 +50,186 @@ Shape(value?: PixelMap)
## 示例
+### 示例1
+
```ts
// xxx.ets
@Entry
@Component
struct ShapeExample {
build() {
- Column({ space: 5 }) {
- Text('basic').fontSize(30).fontColor(0xCCCCCC).width(320)
- // 在Shape的(-2, -2)点绘制一个 300 * 50 带边框的矩形,颜色0x317Af7,边框颜色黑色,边框宽度4,边框间隙20,向左偏移10,尖端样式圆角,拐角样式圆角,抗锯齿(默认开启)
- // 在Shape的(-2, 58)点绘制一个 300 * 50 带边框的椭圆,颜色0x317Af7,边框颜色黑色,边框宽度4,边框间隙20,向左偏移10,尖端样式圆角,拐角样式圆角,抗锯齿(默认开启)
- // 在Shape的(-2, 118)点绘制一个 300 * 10 线段,颜色0x317Af7,边框颜色黑色,宽度4,间隙20,向左偏移10,尖端样式圆角,拐角样式圆角,抗锯齿(默认开启)
+ Column({ space: 10 }) {
+ Text('basic').fontSize(11).fontColor(0xCCCCCC).width(320)
+ // 在Shape的(-2, -2)点绘制一个 300 * 50 带边框的矩形,颜色0x317AF7,边框颜色黑色,边框宽度4,边框间隙20,向左偏移10,线条两端样式为半圆,拐角样式圆角,抗锯齿(默认开启)
+ // 在Shape的(-2, 58)点绘制一个 300 * 50 带边框的椭圆,颜色0x317AF7,边框颜色黑色,边框宽度4,边框间隙20,向左偏移10,线条两端样式为半圆,拐角样式圆角,抗锯齿(默认开启)
+ // 在Shape的(-2, 118)点绘制一个 300 * 10 直线路径,颜色0x317AF7,边框颜色黑色,宽度4,间隙20,向左偏移10,线条两端样式为半圆,拐角样式圆角,抗锯齿(默认开启)
Shape() {
Rect().width(300).height(50)
Ellipse().width(300).height(50).offset({ x: 0, y: 60 })
Path().width(300).height(10).commands('M0 0 L900 0').offset({ x: 0, y: 120 })
}
.viewPort({ x: -2, y: -2, width: 304, height: 130 })
- .fill(0x317Af7).stroke(Color.Black).strokeWidth(4)
- .strokeDashArray([20]).strokeDashOffset(10).strokeLineCap(LineCapStyle.Round)
- .strokeLineJoin(LineJoinStyle.Round).antiAlias(true)
- // 在Shape的(-1, -1)点绘制一个 300 * 50 带边框的矩形,颜色0x317Af7,边框颜色黑色,边框宽度2
+ .fill(0x317AF7)
+ .stroke(Color.Black)
+ .strokeWidth(4)
+ .strokeDashArray([20])
+ .strokeDashOffset(10)
+ .strokeLineCap(LineCapStyle.Round)
+ .strokeLineJoin(LineJoinStyle.Round)
+ .antiAlias(true)
+ // 分别在Shape的(0, 0)、(-5, -5)点绘制一个 300 * 50 带边框的矩形,可以看出之所以将视口的起始位置坐标设为负值是因为绘制的起点默认为线宽的中点位置,因此要让边框完全显示则需要让视口偏移半个线宽
Shape() {
Rect().width(300).height(50)
- }.viewPort({ x: -1, y: -1, width: 302, height: 52 }).fill(0x317Af7).stroke(Color.Black).strokeWidth(2)
+ }
+ .viewPort({ x: 0, y: 0, width: 320, height: 70 })
+ .fill(0x317AF7)
+ .stroke(Color.Black)
+ .strokeWidth(10)
- Text('border').fontSize(30).fontColor(0xCCCCCC).width(320).margin({top:30})
- // 在Shape的(0, -5)点绘制一个 300 * 10 直线,颜色0xEE8443,边框宽度10,边框间隙20
Shape() {
- Path().width(300).height(10).commands('M0 0 L900 0')
- }.viewPort({ x: 0, y: -5, width: 300, height: 20 }).stroke(0xEE8443).strokeWidth(10).strokeDashArray([20])
- // 在Shape的(0, -5)点绘制一个 300 * 10 直线,颜色0xEE8443,边框宽度10,边框间隙20,向左偏移10
+ Rect().width(300).height(50)
+ }
+ .viewPort({ x: -5, y: -5, width: 320, height: 70 })
+ .fill(0x317AF7)
+ .stroke(Color.Black)
+ .strokeWidth(10)
+
+ Text('path').fontSize(11).fontColor(0xCCCCCC).width(320)
+ // 在Shape的(0, -5)点绘制一条直线路径,颜色0xEE8443,线条宽度10,线条间隙20
Shape() {
Path().width(300).height(10).commands('M0 0 L900 0')
}
.viewPort({ x: 0, y: -5, width: 300, height: 20 })
- .stroke(0xEE8443).strokeWidth(10).strokeDashArray([20]).strokeDashOffset(10)
- // 在Shape的(0, -5)点绘制一个 300 * 10 直线,颜色0xEE8443,边框宽度10,透明度0.5
+ .stroke(0xEE8443)
+ .strokeWidth(10)
+ .strokeDashArray([20])
+ // 在Shape的(0, -5)点绘制一条直线路径,颜色0xEE8443,线条宽度10,线条间隙20,向左偏移10
Shape() {
Path().width(300).height(10).commands('M0 0 L900 0')
- }.viewPort({ x: 0, y: -5, width: 300, height: 20 }).stroke(0xEE8443).strokeWidth(10).strokeOpacity(0.5)
- // 在Shape的(0, -5)点绘制一个 300 * 10 直线,颜色0xEE8443,边框宽度10,边框间隙20,向左偏移10,尖端样式圆角
+ }
+ .viewPort({ x: 0, y: -5, width: 300, height: 20 })
+ .stroke(0xEE8443)
+ .strokeWidth(10)
+ .strokeDashArray([20])
+ .strokeDashOffset(10)
+ // 在Shape的(0, -5)点绘制一条直线路径,颜色0xEE8443,线条宽度10,透明度0.5
Shape() {
Path().width(300).height(10).commands('M0 0 L900 0')
}
.viewPort({ x: 0, y: -5, width: 300, height: 20 })
- .stroke(0xEE8443).strokeWidth(10).strokeDashArray([20]).strokeLineCap(LineCapStyle.Round)
- // 在Shape的(-5, -5)点绘制一个 300 * 50 带边框的矩形,颜色0x317Af7,边框宽度10,边框颜色0xEE8443,拐角样式圆角
+ .stroke(0xEE8443)
+ .strokeWidth(10)
+ .strokeOpacity(0.5)
+ // 在Shape的(0, -5)点绘制一条直线路径,颜色0xEE8443,线条宽度10,线条间隙20,线条两端样式为半圆
Shape() {
- Rect().width(300).height(100)
+ Path().width(300).height(10).commands('M0 0 L900 0')
}
- .viewPort({ x: -5, y: -5, width: 310, height: 120 })
- .fill(0x317Af7).stroke(0xEE8443).strokeWidth(10).strokeLineJoin(LineJoinStyle.Round)
+ .viewPort({ x: 0, y: -5, width: 300, height: 20 })
+ .stroke(0xEE8443)
+ .strokeWidth(10)
+ .strokeDashArray([20])
+ .strokeLineCap(LineCapStyle.Round)
+ // 在Shape的(-80, -5)点绘制一个封闭路径,颜色0x317AF7,线条宽度10,边框颜色0xEE8443,拐角样式锐角(默认值)
Shape() {
- Path().width(300).height(60).commands('M0 0 L400 0 L400 200 Z')
+ Path().width(200).height(60).commands('M0 0 L400 0 L400 150 Z')
}
- .viewPort({ x: -80, y: -5, width: 310, height: 100 })
- .fill(0x317Af7).stroke(0xEE8443).strokeWidth(10)
- .strokeLineJoin(LineJoinStyle.Miter).strokeMiterLimit(5)
+ .viewPort({ x: -80, y: -5, width: 310, height: 90 })
+ .fill(0x317AF7)
+ .stroke(0xEE8443)
+ .strokeWidth(10)
+ .strokeLineJoin(LineJoinStyle.Miter)
+ .strokeMiterLimit(5)
}.width('100%').margin({ top: 15 })
}
}
```

+
+### 示例2
+
+```ts
+// xxx.ets
+@Entry
+@Component
+struct ShapeMeshExample {
+ @State columnVal: number = 0;
+ @State rowVal: number = 0;
+ @State count: number = 0;
+ @State verts: Array
= [];
+ @State shapeWidth: number = 600;
+ @State shapeHeight: number = 600;
+
+ build() {
+ Column() {
+ Shape() {
+ Rect()
+ .width('250px')
+ .height('250px')
+ .radiusWidth('10px')
+ .radiusHeight('10px')
+ .stroke('10px')
+ .margin({ left: '10px', top: '10px' })
+ .strokeWidth('10px')
+ .fill(Color.Blue)
+ Rect()
+ .width('250px')
+ .height('250px')
+ .radiusWidth('10px')
+ .radiusHeight('10px')
+ .stroke('10px')
+ .margin({ left: '270px', top: '10px' })
+ .strokeWidth('10px')
+ .fill(Color.Red)
+ }
+ .mesh(this.verts, this.columnVal, this.rowVal)
+ .width(this.shapeWidth + 'px')
+ .height(this.shapeHeight + 'px')
+ // 手指触摸Shape组件时会显示mesh扭曲效果
+ .onTouch((event: TouchEvent) => {
+ var touchX = event.touches[0].x * 2;
+ var touchY = event.touches[0].y * 2;
+ this.columnVal = 20;
+ this.rowVal = 20;
+ this.count = (this.columnVal + 1) * (this.rowVal + 1);
+ var orig = [this.count * 2];
+ var index = 0;
+ for (var i = 0; i <= this.rowVal; i++) {
+ var fy = this.shapeWidth * i / this.rowVal;
+ for (var j = 0; j <= this.columnVal; j++) {
+ var fx = this.shapeWidth * j / this.columnVal;
+ orig[index * 2 + 0] = this.verts[index * 2 + 0] = fx;
+ orig[index * 2 + 1] = this.verts[index * 2 + 1] = fy;
+ index++;
+ }
+ }
+ for (var k = 0; k < this.count * 2; k += 2) {
+ var dx = touchX - orig[k + 0];
+ var dy = touchY - orig[k + 1];
+ var dd = dx * dx + dy * dy;
+ var d = Math.sqrt(dd);
+ var pull = 80000 / (dd * d);
+ if (pull >= 1) {
+ this.verts[k + 0] = touchX;
+ this.verts[k + 1] = touchY;
+ } else {
+ this.verts[k + 0] = orig[k + 0] + dx * pull;
+ this.verts[k + 1] = orig[k + 1] + dy * pull;
+ }
+ }
+ })
+ }
+ .width('600px')
+ .height('600px')
+ .border({ width: 3, color: Color.Black })
+ }
+}
+```
+
+示意图:
+
+
+
+手指触摸Shape组件时会显示mesh扭曲效果:
+
+
\ No newline at end of file
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-methods-timepicker-dialog.md b/zh-cn/application-dev/reference/arkui-ts/ts-methods-timepicker-dialog.md
index e677502d18b77ae32ffbb8937bf53b362bf1a433..494aabc0122e49cb4a09f9b8e67b0143db07013e 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-methods-timepicker-dialog.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-methods-timepicker-dialog.md
@@ -5,11 +5,6 @@
> **说明:**
> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
-
-## 权限列表
-
-无
-
## TimePickerDialog.show
show(options?: TimePickerDialogOptions)
@@ -58,7 +53,10 @@ struct TimePickerDialogExample01 {
}
}
```
+ 
+
### 时间滑动选择器(12小时制)示例
+
```ts
// xxx.ets
@Entry
@@ -87,3 +85,5 @@ struct TimePickerDialogExample02 {
}
}
```
+
+ 
\ No newline at end of file
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-border-image.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-border-image.md
index 36290e72ab198b62ec2df96a214a788e126df6d1..f41094b9cdbd4e67ced835979abdda515cc245b2 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-border-image.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-border-image.md
@@ -14,25 +14,15 @@
## BorderImageOption对象说明
-| 名称 | 类型 | 描述 |
-| ---------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
-| source | string \| [Resource](ts-types.md#resource) \| [linearGradient](ts-universal-attributes-gradient-color.md) | 边框图源或者渐变色设置。 |
-| slice | [Length](ts-types.md#length)\| EdgeWidths | 设置图片边框切割宽度。
**说明:**
切分过程会将图像分割为9个区域:四个角、四个边以及中心区域。四个角的区域,用于组成最终图片边框图像的四个角;四个边区域,在最终的边框图像中重复、缩放或修改它们以匹配元素的大小;中心区域默认情况下会被丢弃,不进行填充。
默认值:0 |
-| width | [Length](ts-types.md#length)\| EdgeWidths | 设置图片边框宽度。
默认值:0 |
-| outset | [Length](ts-types.md#length)\| EdgeWidths | 设置边框图片向外延伸距离。
默认值:0 |
-| RepeatMode | RepeatMode | 设置边框图片的重复方式。
默认值:RepeatMode.Stretch |
-| fill | boolean | 设置边框图片中心填充。
默认值:false |
-
-## EdgeWidths对象说明
-
-引用该对象时,至少传入一个参数。
-
-| 名称 | 参数类型 | 必填 |描述 |
-| -------- | -------- |-------- |-------- |
-| left | [Length](ts-types.md#length) | 否 | 左侧距离参数。 |
-| right | [Length](ts-types.md#length) | 否 | 右侧距离参数。 |
-| top | [Length](ts-types.md#length) | 否 | 上侧距离参数。 |
-| bottom | [Length](ts-types.md#length) | 否 | 下侧距离参数。 |
+| 名称 | 类型 | 描述 |
+| ---------- | ---------------------------------------- | --------------------------------------- |
+| source | string \| [Resource](ts-types.md#resource) \| [linearGradient](ts-universal-attributes-gradient-color.md) | 边框图源或者渐变色设置。 |
+| slice | [Length](ts-types.md#length)\| [EdgeWidths](ts-types.md#edgewidths9) | 设置图片边框切割宽度。
默认值:0 |
+| width | [Length](ts-types.md#length)\| [EdgeWidths](ts-types.md#edgewidths9) | 设置图片边框宽度。
默认值:0 |
+| outset | [Length](ts-types.md#length)\| [EdgeWidths](ts-types.md#edgewidths9) | 设置边框图片向外延伸距离。
默认值:0 |
+| RepeatMode | RepeatMode | 设置边框图片的重复方式。
默认值:RepeatMode.Stretch |
+| fill | boolean | 设置边框图片中心填充。
默认值:false |
+
## RepeatMode枚举说明
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-component-id.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-component-id.md
index b4a47dab65eccb79d6835554917823e20307a68d..74c6d1bce40e91a4f1f11c38fa35fc0d5a833b8c 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-component-id.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-component-id.md
@@ -11,7 +11,7 @@ id为组件的唯一标识,在整个应用内唯一。本模块提供组件标
| 名称 | 参数说明 | 描述 |
| -----| -------- | ----------------------------- |
-| id | string | 组件的唯一标识,唯一性由使用者保证。
默认值:''|
+| id | string | 组件的唯一标识,唯一性由使用者保证。
默认值:'' |
## 接口
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-flex-layout.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-flex-layout.md
index 6e1de9e4bc97caefa5cb8c6a14f4573e8694e722..e4414bb93c2b9b19354b873f1e342ad90635d7bf 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-flex-layout.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-flex-layout.md
@@ -23,7 +23,6 @@
@Entry
@Component
struct FlexExample {
-
build() {
Column({ space: 5 }) {
Text('flexBasis').fontSize(9).fontColor(0xCCCCCC).width('90%')
@@ -31,11 +30,18 @@ struct FlexExample {
// flexBasis()值可以是'auto',表示基准尺寸是元素本来的大小 ,也可以是长度设置,相当于.width()/.height()
Flex() {
Text('flexBasis(100)')
- .flexBasis('100').height(100).lineHeight(70)
- .backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)
+ .flexBasis('100')
+ .height(100)
+ .lineHeight(70)
+ .backgroundColor(0xF5DEB3)
+ .textAlign(TextAlign.Center)
Text('flexBasis("auto")')
- .flexBasis('auto').width('60%').height(100).lineHeight(70)
- .backgroundColor(0xD2B48C).textAlign(TextAlign.Center)
+ .flexBasis('auto')
+ .width('60%')
+ .height(100)
+ .lineHeight(70)
+ .backgroundColor(0xD2B48C)
+ .textAlign(TextAlign.Center)
}.width('90%').height(120).padding(10).backgroundColor(0xAFEEEE)
Text('flexGrow').fontSize(9).fontColor(0xCCCCCC).width('90%')
@@ -43,11 +49,17 @@ struct FlexExample {
// flexGrow()剩余空间分配给该元素的比例
Flex() {
Text('flexGrow(2)')
- .flexGrow(2).height(100).lineHeight(70)
- .backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)
+ .flexGrow(2)
+ .height(100)
+ .lineHeight(70)
+ .backgroundColor(0xF5DEB3)
+ .textAlign(TextAlign.Center)
Text('flexGrow(1)')
- .flexGrow(1).height(100).lineHeight(70)
- .backgroundColor(0xD2B48C).textAlign(TextAlign.Center)
+ .flexGrow(1)
+ .height(100)
+ .lineHeight(70)
+ .backgroundColor(0xD2B48C)
+ .textAlign(TextAlign.Center)
}.width('90%').height(120).padding(10).backgroundColor(0xAFEEEE)
Text('flexShrink').fontSize(9).fontColor(0xCCCCCC).width('90%')
@@ -55,13 +67,25 @@ struct FlexExample {
// text1比例是0,其他都是默认值1,放不下时直接等比例缩放后两个,第一个不缩放
Flex({ direction: FlexDirection.Row }) {
Text('flexShrink(0)')
- .flexShrink(0).width('50%').height(100).lineHeight(70)
- .backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)
+ .flexShrink(0)
+ .width('50%')
+ .height(100)
+ .lineHeight(70)
+ .backgroundColor(0xF5DEB3)
+ .textAlign(TextAlign.Center)
Text('no flexShrink')
- .width('40%').height(100).lineHeight(70).backgroundColor(0xD2B48C).textAlign(TextAlign.Center)
+ .width('40%')
+ .height(100)
+ .lineHeight(70)
+ .backgroundColor(0xD2B48C)
+ .textAlign(TextAlign.Center)
Text('flexShrink(2)')
- .flexShrink(2).width('40%').height(100) .lineHeight(70)
- .backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)
+ .flexShrink(2)
+ .width('40%')
+ .height(100)
+ .lineHeight(70)
+ .backgroundColor(0xF5DEB3)
+ .textAlign(TextAlign.Center)
}.width('90%').height(120).padding(10).backgroundColor(0xAFEEEE)
Text('alignSelf').fontSize(9).fontColor(0xCCCCCC).width('90%')
@@ -70,8 +94,12 @@ struct FlexExample {
Text('no alignSelf,height:80').width('33%').height(80)
.backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)
Text('alignSelf stretch')
- .alignSelf(ItemAlign.Stretch).width('33%').height(80).lineHeight(70)
- .backgroundColor(0xD2B48C).textAlign(TextAlign.Center)
+ .alignSelf(ItemAlign.Stretch)
+ .width('33%')
+ .height(80)
+ .lineHeight(70)
+ .backgroundColor(0xD2B48C)
+ .textAlign(TextAlign.Center)
Text('no alignSelf,height:100').width('34%').height(100)
.backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)
}.width('90%').height(120).padding(10).backgroundColor(0xAFEEEE)
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-opacity.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-opacity.md
index 592d818752f86f81e501fc475c0af0f04e29f70b..af1f6a91733221cba91a4c988658878ae00ec49b 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-opacity.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-opacity.md
@@ -10,9 +10,9 @@
## 属性
-| 名称 | 参数类型 | 描述 |
-| ------- | ---------------------------------------- | ---------------------------------------- |
-| opacity | number \| [Resource](ts-types.md#resource) | 元素的不透明度,取值范围为0到1,1表示为不透明,0表示为完全透明。
默认值:1 |
+| 名称 | 参数类型 | 描述 |
+| ------- | ---------------------------------------------------- | ------------------------------------------------------------ |
+| opacity | number \| [Resource](ts-types.md#resource) | 元素的不透明度,取值范围为0到1,1表示为不透明,0表示为完全透明。
**说明:**
子组件可以继承父组件的此属性。默认值:1 |
## 示例
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-size.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-size.md
index c83bcdf3dddd087b3b82061fd663516bdede767f..0626e002ac1d94606d6f4bd1531592703c6cedc0 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-size.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-size.md
@@ -16,7 +16,7 @@
| height | [Length](ts-types.md#length) | 设置组件自身的高度,缺省时使用元素自身内容需要的高度。若子组件的高大于父组件的高,则会画出父组件的范围。 |
| size | {
width?: [Length](ts-types.md#length),
height?: [Length](ts-types.md#length)
} | 设置高宽尺寸。 |
| padding | [Padding](ts-types.md#padding) \| [Length](ts-types.md#length) | 设置内边距属性。
参数为Length类型时,四个方向内边距同时生效。
默认值:0
padding设置百分比时,上下左右内边距均以父容器的width作为基础值。 |
-| margin | [Margin](ts-types.md#margin)) \| [Length](ts-types.md#length) | 设置外边距属性。
参数为Length类型时,四个方向外边距同时生效。
默认值:0
margin设置百分比时,上下左右外边距均以父容器的width作为基础值。|
+| margin | [Margin](ts-types.md#margin) \| [Length](ts-types.md#length) | 设置外边距属性。
参数为Length类型时,四个方向外边距同时生效。
默认值:0
margin设置百分比时,上下左右外边距均以父容器的width作为基础值。|
| constraintSize | {
minWidth?: [Length](ts-types.md#length),
maxWidth?: [Length](ts-types.md#length),
minHeight?: [Length](ts-types.md#length),
maxHeight?: [Length](ts-types.md#length)
} | 设置约束尺寸,组件布局时,进行尺寸范围限制。constraintSize的优先级高于Width和Height。
默认值:
{
minWidth: 0,
maxWidth: Infinity,
minHeight: 0,
maxHeight: Infinity
} |
| layoutWeight | number \| string | 容器尺寸确定时,元素与兄弟节点主轴布局尺寸按照权重进行分配,忽略本身尺寸设置,表示自适应占满剩余空间。
**说明:**
仅在Row/Column/Flex布局中生效。
默认值:0 |
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-component-visible-area-change-event.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-component-visible-area-change-event.md
index c61fbf86b163080febedb7228e8bc40c68db5984..ef742a9b6e92db10ca0c52ca5183d30f8318776c 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-component-visible-area-change-event.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-component-visible-area-change-event.md
@@ -23,8 +23,8 @@
struct ScrollExample {
scroller: Scroller = new Scroller()
private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- @State testTextStr: string = "test"
- @State testRowStr: string = "test"
+ @State testTextStr: string = 'test'
+ @State testRowStr: string = 'test'
build() {
Column() {
@@ -46,22 +46,22 @@ struct ScrollExample {
.height(200)
.margin({ top: 50, bottom: 20 })
.backgroundColor(Color.Green)
- // 通过设置ratios为[0.0, 1.0],实现当组件完全显示或完全消失在屏幕中时触发回调
+ // 通过设置ratios为[0.0, 1.0],实现当组件完全显示或完全消失在屏幕中时触发回调
.onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) => {
- console.info("Test Text isVisible: " + isVisible + ", currentRatio:" + currentRatio)
+ console.info('Test Text isVisible: ' + isVisible + ', currentRatio:' + currentRatio)
if (isVisible && currentRatio >= 1.0) {
- console.info("Test Text is fully visible. currentRatio:" + currentRatio)
- this.testTextStr = "Test Text is fully visible"
+ console.info('Test Text is fully visible. currentRatio:' + currentRatio)
+ this.testTextStr = 'Test Text is fully visible'
}
if (!isVisible && currentRatio <= 0.0) {
- console.info("Test Text is completely invisible.")
- this.testTextStr = "Test Text is completely invisible"
+ console.info('Test Text is completely invisible.')
+ this.testTextStr = 'Test Text is completely invisible'
}
})
Row() {
- Text("Test Row Visible Change")
+ Text('Test Row Visible Change')
.fontSize(20)
.margin({ bottom: 20 })
@@ -69,15 +69,15 @@ struct ScrollExample {
.height(200)
.backgroundColor(Color.Yellow)
.onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) => {
- console.info("Test Row isVisible:" + isVisible + ", currentRatio:" + currentRatio)
+ console.info('Test Row isVisible:' + isVisible + ', currentRatio:' + currentRatio)
if (isVisible && currentRatio >= 1.0) {
- console.info("Test Row is fully visible.")
- this.testRowStr = "Test Row is fully visible"
+ console.info('Test Row is fully visible.')
+ this.testRowStr = 'Test Row is fully visible'
}
if (!isVisible && currentRatio <= 0.0) {
- console.info("Test Row is is completely invisible.")
- this.testRowStr = "Test Row is is completely invisible"
+ console.info('Test Row is is completely invisible.')
+ this.testRowStr = 'Test Row is is completely invisible'
}
})
diff --git a/zh-cn/application-dev/reference/js-service-widget-ui/js-service-widget-common-gradient.md b/zh-cn/application-dev/reference/js-service-widget-ui/js-service-widget-common-gradient.md
index 8f778ea25765381fdd7803aa846e17787366ea82..5a8da0fdde73adcd3714953cb1b580397deab18e 100644
--- a/zh-cn/application-dev/reference/js-service-widget-ui/js-service-widget-common-gradient.md
+++ b/zh-cn/application-dev/reference/js-service-widget-ui/js-service-widget-common-gradient.md
@@ -80,7 +80,7 @@ background: repeating-linear-gradient(direction/angle, color, color, ...);
```css
/* 从左向右重复渐变,重复渐变区域30px(60-30)透明度0.5 */
- background: repeating-linear-gradient(to right, rgba(255, 255, 0, 1) 30px,rgba(0, 0, 255, .5) 60px);
+ background: repeating-linear-gradient(to right, rgba(255, 255, 0, 1) 30vp,rgba(0, 0, 255, .5) 60vp);
```

diff --git a/zh-cn/application-dev/reference/js-service-widget-ui/js-service-widget-custom-props.md b/zh-cn/application-dev/reference/js-service-widget-ui/js-service-widget-custom-props.md
index 9fdfc043b87ecd5ee5e5ac497df7c7fb75e6335e..992ed8445e6caf816393a346c18d43339b61640c 100644
--- a/zh-cn/application-dev/reference/js-service-widget-ui/js-service-widget-custom-props.md
+++ b/zh-cn/application-dev/reference/js-service-widget-ui/js-service-widget-custom-props.md
@@ -35,6 +35,7 @@
```json
+// comp.json
{
"data": {
"progress": {
diff --git a/zh-cn/application-dev/reference/native-apis/Readme-CN.md b/zh-cn/application-dev/reference/native-apis/Readme-CN.md
index 73ed97aa476abb0e5e3a15a7bd3a2c94625e486a..d6ce06376bc515eacba70c8d9d336e792ff4f704 100644
--- a/zh-cn/application-dev/reference/native-apis/Readme-CN.md
+++ b/zh-cn/application-dev/reference/native-apis/Readme-CN.md
@@ -1,47 +1,58 @@
# Native API
- 模块
- - [Native XComponent](_o_h___native_x_component.md)
- - [HiLog](_hi_log.md)
- - [NativeWindow](_native_window.md)
- - [OH_NativeBuffer](_o_h___native_buffer.md)
- - [Drawing](_drawing.md)
- - [OH_NativeImage](_o_h___native_image.md)
- - [NativeVsync](_native_vsync.md)
- - [Image](image.md)
- - [Rawfile](rawfile.md)
+ - [Native XComponent](_o_h___native_x_component.md)
+ - [HiLog](_hi_log.md)
+ - [NativeWindow](_native_window.md)
+ - [OH_NativeBuffer](_o_h___native_buffer.md)
+ - [Drawing](_drawing.md)
+ - [OH_NativeImage](_o_h___native_image.md)
+ - [NativeVsync](_native_vsync.md)
+ - [Image](image.md)
+ - [Rawfile](rawfile.md)
+ - [MindSpore](_mind_spore.md)
- 头文件
- - [drawing_bitmap.h](drawing__bitmap_8h.md)
- - [drawing_brush.h](drawing__brush_8h.md)
- - [drawing_canvas.h](drawing__canvas_8h.md)
- - [drawing_color.h](drawing__color_8h.md)
- - [drawing_font_collection.h](drawing__font__collection_8h.md)
- - [drawing_path.h](drawing__path_8h.md)
- - [drawing_pen.h](drawing__pen_8h.md)
- - [drawing_text_declaration.h](drawing__text__declaration_8h.md)
- - [drawing_text_typography.h](drawing__text__typography_8h.md)
- - [drawing_types.h](drawing__types_8h.md)
- - [external_window.h](external__window_8h.md)
- - [image_pixel_map_napi.h](image__pixel__map__napi_8h.md)
- - [log.h](log_8h.md)
- - [native_buffer.h](native__buffer_8h.md)
- - [native_image.h](native__image_8h.md)
- - [native_interface_xcomponent.h](native__interface__xcomponent_8h.md)
- - [native_vsync.h](native__vsync_8h.md)
- - [raw_dir.h](raw__dir_8h.md)
- - [raw_file_manager.h](raw__file__manager_8h.md)
- - [raw_file.h](raw__file_8h.md)
+ - [drawing_bitmap.h](drawing__bitmap_8h.md)
+ - [drawing_brush.h](drawing__brush_8h.md)
+ - [drawing_canvas.h](drawing__canvas_8h.md)
+ - [drawing_color.h](drawing__color_8h.md)
+ - [drawing_font_collection.h](drawing__font__collection_8h.md)
+ - [drawing_path.h](drawing__path_8h.md)
+ - [drawing_pen.h](drawing__pen_8h.md)
+ - [drawing_text_declaration.h](drawing__text__declaration_8h.md)
+ - [drawing_text_typography.h](drawing__text__typography_8h.md)
+ - [drawing_types.h](drawing__types_8h.md)
+ - [external_window.h](external__window_8h.md)
+ - [image_pixel_map_napi.h](image__pixel__map__napi_8h.md)
+ - [log.h](log_8h.md)
+ - [native_buffer.h](native__buffer_8h.md)
+ - [native_image.h](native__image_8h.md)
+ - [native_interface_xcomponent.h](native__interface__xcomponent_8h.md)
+ - [native_vsync.h](native__vsync_8h.md)
+ - [raw_dir.h](raw__dir_8h.md)
+ - [raw_file_manager.h](raw__file__manager_8h.md)
+ - [raw_file.h](raw__file_8h.md)
+ - [context.h](context_8h.md)
+ - [data_type.h](data__type_8h.md)
+ - [format.h](format_8h.md)
+ - [model.h](model_8h.md)
+ - [status.h](status_8h.md)
+ - [tensor.h](tensor_8h.md)
+ - [types.h](types_8h.md)
- 结构体
- - [OH_Drawing_BitmapFormat](_o_h___drawing___bitmap_format.md)
- - [OH_NativeBuffer_Config](_o_h___native_buffer___config.md)
- - [OH_NativeXComponent_Callback](_o_h___native_x_component___callback.md)
- - [OH_NativeXComponent_MouseEvent](_o_h___native_x_component___mouse_event.md)
- - [OH_NativeXComponent_MouseEvent_Callback](_o_h___native_x_component___mouse_event___callback.md)
- - [OH_NativeXComponent_TouchEvent](_o_h___native_x_component___touch_event.md)
- - [OH_NativeXComponent_TouchPoint](_o_h___native_x_component___touch_point.md)
- - [OHExtDataHandle](_o_h_ext_data_handle.md)
- - [OHHDRMetaData](_o_h_h_d_r_meta_data.md)
- - [OhosPixelMapInfo](_ohos_pixel_map_info.md)
- - [RawFileDescriptor](_raw_file_descriptor.md)
- - [Region](_region.md)
- - [Rect](_rect.md)
+ - [OH_Drawing_BitmapFormat](_o_h___drawing___bitmap_format.md)
+ - [OH_NativeBuffer_Config](_o_h___native_buffer___config.md)
+ - [OH_NativeXComponent_Callback](_o_h___native_x_component___callback.md)
+ - [OH_NativeXComponent_MouseEvent](_o_h___native_x_component___mouse_event.md)
+ - [OH_NativeXComponent_MouseEvent_Callback](_o_h___native_x_component___mouse_event___callback.md)
+ - [OH_NativeXComponent_TouchEvent](_o_h___native_x_component___touch_event.md)
+ - [OH_NativeXComponent_TouchPoint](_o_h___native_x_component___touch_point.md)
+ - [OHExtDataHandle](_o_h_ext_data_handle.md)
+ - [OHHDRMetaData](_o_h_h_d_r_meta_data.md)
+ - [OhosPixelMapInfo](_ohos_pixel_map_info.md)
+ - [RawFileDescriptor](_raw_file_descriptor.md)
+ - [Region](_region.md)
+ - [Rect](_rect.md)
+ - [OH_AI_CallBackParam](_o_h___a_i___call_back_param.md)
+ - [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md)
+ - [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md)
diff --git a/zh-cn/application-dev/reference/native-apis/_mind_spore.md b/zh-cn/application-dev/reference/native-apis/_mind_spore.md
new file mode 100644
index 0000000000000000000000000000000000000000..061eece1bfb48ef62a390c389e1031b41aa04093
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/_mind_spore.md
@@ -0,0 +1,1470 @@
+# MindSpore
+
+
+提供MindSpore Lite的模型推理相关接口。
+
+
+@Syscap SystemCapability.Ai.MindSpore
+
+
+**自从:**
+
+
+9
+
+
+## 汇总
+
+
+### 文件
+
+| 文件名称 | 描述 |
+| -------- | -------- |
+| [context.h](context_8h.md) | 提供了Context相关的接口,可以配置运行时信息。 |
+| [data_type.h](data__type_8h.md) | 声明了张量的数据的类型。 |
+| [format.h](format_8h.md) | 提供张量数据的排列格式。 |
+| [model.h](model_8h.md) | 提供了模型相关接口,可以用于模型创建、模型推理等。 |
+| [status.h](status_8h.md) | 提供了Mindspore Lite运行时的状态码。 |
+| [tensor.h](tensor_8h.md) | 提供了张量相关的接口,可用于创建和修改张量信息。 |
+| [types.h](types_8h.md) | 提供了MindSpore Lite支持的模型文件类型和设备类型。 |
+
+
+### 结构体
+
+| 结构体名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) | 张量数组结构体,用于存储张量数组指针和张量数组长度。 |
+| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) | 维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。 |
+| [OH_AI_CallBackParam](_o_h___a_i___call_back_param.md) | 回调函数中传入的算子信息。 |
+
+
+### 宏定义
+
+| 宏定义名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_MAX_SHAPE_NUM](#oh_ai_max_shape_num) 32 | 维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。 |
+
+
+### 类型定义
+
+| 类型定义名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_ContextHandle](#oh_ai_contexthandle) | Mindspore的上下文信息的指针,该指针会指向Context。 |
+| [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) | Mindspore的运行设备信息的指针。 |
+| [OH_AI_DataType](#oh_ai_datatype) | MSTensor保存的数据支持的类型。 |
+| [OH_AI_Format](#oh_ai_format) | MSTensor保存的数据支持的排列格式。 |
+| [OH_AI_ModelHandle](#oh_ai_modelhandle) | 指向模型对象的指针。 |
+| [OH_AI_TensorHandleArray](#oh_ai_tensorhandlearray) | 张量数组结构体,用于存储张量数组指针和张量数组长度。 |
+| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) | 维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。 |
+| [OH_AI_CallBackParam](#oh_ai_callbackparam) | 回调函数中传入的算子信息。 |
+| [OH_AI_KernelCallBack](#oh_ai_kernelcallback)) (const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs, const OH_AI_CallBackParam kernel_Info) | 回调函数指针。 |
+| [OH_AI_Status](#oh_ai_status) | Minspore的状态码。 |
+| [OH_AI_TensorHandle](#oh_ai_tensorhandle) | 指向张量对象句柄。 |
+| [OH_AI_ModelType](#oh_ai_modeltype) | 模型文件的类型。 |
+| [OH_AI_DeviceType](#oh_ai_devicetype) | 设备类型,该信息。 |
+
+
+### 枚举
+
+| 枚举名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_DataType](#oh_ai_datatype) {
OH_AI_DATATYPE_UNKNOWN = 0,
OH_AI_DATATYPE_OBJECTTYPE_STRING = 12,
OH_AI_DATATYPE_OBJECTTYPE_LIST = 13,
OH_AI_DATATYPE_OBJECTTYPE_TUPLE = 14,
OH_AI_DATATYPE_OBJECTTYPE_TENSOR = 17,
OH_AI_DATATYPE_NUMBERTYPE_BEGIN = 29,
OH_AI_DATATYPE_NUMBERTYPE_BOOL = 30,
OH_AI_DATATYPE_NUMBERTYPE_INT8 = 32,
OH_AI_DATATYPE_NUMBERTYPE_INT16 = 33,
OH_AI_DATATYPE_NUMBERTYPE_INT32 = 34,
OH_AI_DATATYPE_NUMBERTYPE_INT64 = 35,
OH_AI_DATATYPE_NUMBERTYPE_UINT8 = 37,
OH_AI_DATATYPE_NUMBERTYPE_UINT16 = 38,
OH_AI_DATATYPE_NUMBERTYPE_UINT32 = 39,
OH_AI_DATATYPE_NUMBERTYPE_UINT64 = 40,
OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 = 42,
OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 = 43,
OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 = 44,
OH_AI_DATATYPE_NUMBERTYPE_END = 46,
OH_AI_DataTypeInvalid = INT32_MAX } | MSTensor保存的数据支持的类型。 |
+| [OH_AI_Format](#oh_ai_format) {
OH_AI_FORMAT_NCHW = 0,
OH_AI_FORMAT_NHWC = 1,
OH_AI_FORMAT_NHWC4 = 2,
OH_AI_FORMAT_HWKC = 3,
OH_AI_FORMAT_HWCK = 4,
OH_AI_FORMAT_KCHW = 5,
OH_AI_FORMAT_CKHW = 6,
OH_AI_FORMAT_KHWC = 7,
OH_AI_FORMAT_CHWK = 8,
OH_AI_FORMAT_HW = 9,
OH_AI_FORMAT_HW4 = 10,
OH_AI_FORMAT_NC = 11,
OH_AI_FORMAT_NC4 = 12,
OH_AI_FORMAT_NC4HW4 = 13,
OH_AI_FORMAT_NCDHW = 15,
OH_AI_FORMAT_NWC = 16,
OH_AI_FORMAT_NCW = 17 } | MSTensor保存的数据支持的排列格式。 |
+| [OH_AI_CompCode](#oh_ai_compcode) {
OH_AI_COMPCODE_CORE = 0x00000000u,
OH_AI_COMPCODE_LITE = 0xF0000000u } | Minspore不同组件的代码、 |
+| [OH_AI_Status](#oh_ai_status) {
OH_AI_STATUS_SUCCESS = 0,
OH_AI_STATUS_CORE_FAILED = OH_AI_COMPCODE_CORE \| 0x1,
OH_AI_STATUS_LITE_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -1),
OH_AI_STATUS_LITE_NULLPTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -2),
OH_AI_STATUS_LITE_PARAM_INVALID = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -3),
OH_AI_STATUS_LITE_NO_CHANGE = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -4),
OH_AI_STATUS_LITE_SUCCESS_EXIT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -5),
OH_AI_STATUS_LITE_MEMORY_FAILED = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -6),
OH_AI_STATUS_LITE_NOT_SUPPORT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -7),
OH_AI_STATUS_LITE_THREADPOOL_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -8),
OH_AI_STATUS_LITE_UNINITIALIZED_OBJ = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -9),
OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE,
OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR,
OH_AI_STATUS_LITE_REENTRANT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -102),
OH_AI_STATUS_LITE_GRAPH_FILE_ERROR,
OH_AI_STATUS_LITE_NOT_FIND_OP = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -300), OH_AI_STATUS_LITE_INVALID_OP_NAME = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -301),
OH_AI_STATUS_LITE_INVALID_OP_ATTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -302),
OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE,
OH_AI_STATUS_LITE_FORMAT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -400),
OH_AI_STATUS_LITE_INFER_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -500),
OH_AI_STATUS_LITE_INFER_INVALID = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -501),
OH_AI_STATUS_LITE_INPUT_PARAM_INVALID } | Minspore的状态码。 |
+| [OH_AI_ModelType](#oh_ai_modeltype) {
OH_AI_MODELTYPE_MINDIR = 0,
OH_AI_MODELTYPE_INVALID = 0xFFFFFFFF } | 模型文件的类型。 |
+| [OH_AI_DeviceType](#oh_ai_devicetype) {
OH_AI_DEVICETYPE_CPU = 0,
OH_AI_DEVICETYPE_KIRIN_NPU,
OH_AI_DEVICETYPE_INVALID = 100 } | 设备类型,该信息。 |
+
+
+### 函数
+
+| 函数名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_ContextCreate](#oh_ai_contextcreate) () | 创建一个上下文的对象。 |
+| [OH_AI_ContextDestroy](#oh_ai_contextdestroy) (OH_AI_ContextHandle \*context) | 释放上下文对象。 |
+| [OH_AI_ContextSetThreadNum](#oh_ai_contextsetthreadnum) (OH_AI_ContextHandle context, int32_t thread_num) | 设置运行时的线程数量。 |
+| [OH_AI_ContextGetThreadNum](#oh_ai_contextgetthreadnum) (const OH_AI_ContextHandle context) | 获取线程数量。 |
+| [OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode) (OH_AI_ContextHandle context, int mode) | 设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大核与小核。 |
+| [OH_AI_ContextGetThreadAffinityMode](#oh_ai_contextgetthreadaffinitymode) (const OH_AI_ContextHandle context) | 获取运行时线程绑定CPU核心的策略。 |
+| [OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist) (OH_AI_ContextHandle context, const int32_t \*core_list,
size_t core_num) | 设置运行时线程绑定CPU核心的列表。 |
+| [OH_AI_ContextGetThreadAffinityCoreList](#oh_ai_contextgetthreadaffinitycorelist) (const OH_AI_ContextHandle context, size_t \*core_num) | 获取CPU绑核列表。 |
+| [OH_AI_ContextSetEnableParallel](#oh_ai_contextsetenableparallel) (OH_AI_ContextHandle context, bool is_parallel) | 设置运行时是否支持并行。 |
+| [OH_AI_ContextGetEnableParallel](#oh_ai_contextgetenableparallel) (const OH_AI_ContextHandle context) | 获取是否支持算子间并行。 |
+| [OH_AI_ContextAddDeviceInfo](#oh_ai_contextadddeviceinfo) (OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info) | 添加运行设备信息。 |
+| [OH_AI_DeviceInfoCreate](#oh_ai_deviceinfocreate) (OH_AI_DeviceType device_type) | 创建一个设备信息对象。 |
+| [OH_AI_DeviceInfoDestroy](#oh_ai_deviceinfodestroy) (OH_AI_DeviceInfoHandle \*device_info) | 释放设备信息实例。 |
+| [OH_AI_DeviceInfoSetProvider](#oh_ai_deviceinfosetprovider) (OH_AI_DeviceInfoHandle device_info, const char \*provider) | 设置供应商的名称。 |
+| [OH_AI_DeviceInfoGetProvider](#oh_ai_deviceinfogetprovider) (const OH_AI_DeviceInfoHandle device_info) | 获取生产商的名称。 |
+| [OH_AI_DeviceInfoSetProviderDevice](#oh_ai_deviceinfosetproviderdevice) (OH_AI_DeviceInfoHandle device_info, const char \*device) | 设置生产商设备的名称。 |
+| [OH_AI_DeviceInfoGetProviderDevice](#oh_ai_deviceinfogetproviderdevice) (const OH_AI_DeviceInfoHandle device_info) | 获取生产商设备的名称。 |
+| [OH_AI_DeviceInfoGetDeviceType](#oh_ai_deviceinfogetdevicetype) (const OH_AI_DeviceInfoHandle device_info) | 获取设备的类型。 |
+| [OH_AI_DeviceInfoSetEnableFP16](#oh_ai_deviceinfosetenablefp16) (OH_AI_DeviceInfoHandle device_info, bool is_fp16) | 设置是否开启float16推理模式,仅CPU/GPU设备可用。 |
+| [OH_AI_DeviceInfoGetEnableFP16](#oh_ai_deviceinfogetenablefp16) (const OH_AI_DeviceInfoHandle device_info) | 获取是否开启float16推理模式, 仅CPU/GPU设备可用。 |
+| [OH_AI_DeviceInfoSetFrequency](#oh_ai_deviceinfosetfrequency) (OH_AI_DeviceInfoHandle device_info, int frequency) | 设置NPU的频率,仅NPU设备可用。 |
+| [OH_AI_DeviceInfoGetFrequency](#oh_ai_deviceinfogetfrequency) (const OH_AI_DeviceInfoHandle device_info) | 获取NPU的频率类型,仅NPU设备可用。 |
+| [OH_AI_ModelCreate](#oh_ai_modelcreate) () | 创建一个模型对象。 |
+| [OH_AI_ModelDestroy](#oh_ai_modeldestroy) (OH_AI_ModelHandle \*model) | 释放一个模型对象。 |
+| [OH_AI_ModelBuild](#oh_ai_modelbuild) (OH_AI_ModelHandle model, const void \*model_data, size_t data_size, OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context) | 从内存缓冲区加载并编译MindSpore模型。 |
+| [OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile) (OH_AI_ModelHandle model, const char \*model_path,
OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context) | 通过模型文件加载并编译MindSpore模型。 |
+| [OH_AI_ModelResize](#oh_ai_modelresize) (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs, OH_AI_ShapeInfo \*shape_infos, size_t shape_info_num) | 调整已编译模型的输入形状。 |
+| [OH_AI_ModelPredict](#oh_ai_modelpredict) (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs, OH_AI_TensorHandleArray \*outputs, const OH_AI_KernelCallBack before,
const OH_AI_KernelCallBack after) | 执行模型推理。 |
+| [OH_AI_ModelGetInputs](#oh_ai_modelgetinputs) (const OH_AI_ModelHandle model) | 获取模型的输入张量数组结构体。 |
+| [OH_AI_ModelGetOutputs](#oh_ai_modelgetoutputs) (const OH_AI_ModelHandle model) | 获取模型的输出张量数组结构体。 |
+| [OH_AI_ModelGetInputByTensorName](#oh_ai_modelgetinputbytensorname) (const OH_AI_ModelHandle model, const char \*tensor_name) | 通过张量名获取模型的输入张量。 |
+| [OH_AI_ModelGetOutputByTensorName](#oh_ai_modelgetoutputbytensorname) (const OH_AI_ModelHandle model, const char \*tensor_name) | 通过张量名获取模型的输出张量。 |
+| [OH_AI_TensorCreate](#oh_ai_tensorcreate) (const char \*name, OH_AI_DataType type, const int64_t \*shape,
size_t shape_num, const void \*data, size_t data_len) | 创建一个张量对象。 |
+| [OH_AI_TensorDestroy](#oh_ai_tensordestroy) (OH_AI_TensorHandle \*tensor) | 释放张量对象。 |
+| [OH_AI_TensorClone](#oh_ai_tensorclone) (OH_AI_TensorHandle tensor) | 深拷贝一个张量。 |
+| [OH_AI_TensorSetName](#oh_ai_tensorsetname) (OH_AI_TensorHandle tensor, const char \*name) | 设置张量的名称。 |
+| [OH_AI_TensorGetName](#oh_ai_tensorgetname) (const OH_AI_TensorHandle tensor) | 获取张量的名称。 |
+| [OH_AI_TensorSetDataType](#oh_ai_tensorsetdatatype) (OH_AI_TensorHandle tensor, OH_AI_DataType type) | 设置张量的数据类型。 |
+| [OH_AI_TensorGetDataType](#oh_ai_tensorgetdatatype) (const OH_AI_TensorHandle tensor) | 获取张量类型。 |
+| [OH_AI_TensorSetShape](#oh_ai_tensorsetshape) (OH_AI_TensorHandle tensor, const int64_t \*shape, size_t shape_num) | 设置张量的形状。 |
+| [OH_AI_TensorGetShape](#oh_ai_tensorgetshape) (const OH_AI_TensorHandle tensor, size_t \*shape_num) | 获取张量的形状。 |
+| [OH_AI_TensorSetFormat](#oh_ai_tensorsetformat) (OH_AI_TensorHandle tensor, OH_AI_Format format) | 设置张量数据的排列方式。 |
+| [OH_AI_TensorGetFormat](#oh_ai_tensorgetformat) (const OH_AI_TensorHandle tensor) | 获取张量数据的排列方式。 |
+| [OH_AI_TensorSetData](#oh_ai_tensorsetdata) (OH_AI_TensorHandle tensor, void \*data) | 设置张量的数据。 |
+| [OH_AI_TensorGetData](#oh_ai_tensorgetdata) (const OH_AI_TensorHandle tensor) | 获取张量数据的指针。 |
+| [OH_AI_TensorGetMutableData](#oh_ai_tensorgetmutabledata) (const OH_AI_TensorHandle tensor) | 获取可变的张量数据指针。如果数据为空则会开辟内存。 |
+| [OH_AI_TensorGetElementNum](#oh_ai_tensorgetelementnum) (const OH_AI_TensorHandle tensor) | 获取张量元素数量。 |
+| [OH_AI_TensorGetDataSize](#oh_ai_tensorgetdatasize) (const OH_AI_TensorHandle tensor) | 获取张量中的数据的字节数大小。 |
+
+
+## **宏定义说明**
+
+
+### OH_AI_MAX_SHAPE_NUM
+
+
+```
+#define OH_AI_MAX_SHAPE_NUM 32
+```
+
+**描述:**
+
+维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。
+
+
+## **类型定义说明**
+
+
+### OH_AI_CallBackParam
+
+
+```
+typedef struct OH_AI_CallBackParam OH_AI_CallBackParam
+```
+
+**描述:**
+
+回调函数中传入的算子信息。
+
+
+### OH_AI_ContextHandle
+
+
+```
+typedef void* OH_AI_ContextHandle
+```
+
+**描述:**
+
+Mindspore的上下文信息的指针,该指针会指向Context。
+
+
+### OH_AI_DataType
+
+
+```
+typedef enum OH_AI_DataType OH_AI_DataType
+```
+
+**描述:**
+
+MSTensor保存的数据支持的类型。
+
+
+### OH_AI_DeviceInfoHandle
+
+
+```
+typedef void* OH_AI_DeviceInfoHandle
+```
+
+**描述:**
+
+Mindspore的运行设备信息的指针。
+
+
+### OH_AI_DeviceType
+
+
+```
+typedef enum OH_AI_DeviceType OH_AI_DeviceType
+```
+
+**描述:**
+
+设备类型信息,包含了目前支持的设备类型。
+
+
+### OH_AI_Format
+
+
+```
+typedef enum OH_AI_Format OH_AI_Format
+```
+
+**描述:**
+
+MSTensor保存的数据支持的排列格式。
+
+
+### OH_AI_KernelCallBack
+
+
+```
+typedef bool(* OH_AI_KernelCallBack) (const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs, const OH_AI_CallBackParam kernel_Info)
+```
+
+**描述:**
+
+回调函数指针。
+
+该函数指针是用于设置[OH_AI_ModelPredict](#oh_ai_modelpredict)函数参数中的两个回调函数。 该指针指向的函数需要包含三个参数,其中inputs和outputs对应了算子的输入和输出张量,kernel_Info表示当前算子的信息。 可以通过回调函数监控算子执行的情况,例如统计算子的执行时间,校验算子的正确性等等。
+
+
+### OH_AI_ModelHandle
+
+
+```
+typedef void* OH_AI_ModelHandle
+```
+
+**描述:**
+
+指向模型对象的指针。
+
+
+### OH_AI_ModelType
+
+
+```
+typedef enum OH_AI_ModelType OH_AI_ModelType
+```
+
+**描述:**
+
+模型文件的类型
+
+
+### OH_AI_Status
+
+
+```
+typedef enum OH_AI_Status OH_AI_Status
+```
+
+**描述:**
+
+Minspore的状态码。
+
+
+### OH_AI_TensorHandle
+
+
+```
+typedef void* OH_AI_TensorHandle
+```
+
+**描述:**
+
+指向张量对象句柄。
+
+
+### OH_AI_TensorHandleArray
+
+
+```
+typedef struct OH_AI_TensorHandleArray OH_AI_TensorHandleArray
+```
+
+**描述:**
+
+张量数组结构体,用于存储张量数组指针和张量数组长度。
+
+
+## **枚举类型说明**
+
+
+### OH_AI_CompCode
+
+
+```
+enum OH_AI_CompCode
+```
+
+**描述:**
+
+Minspore不同组件的代码。
+
+| 枚举值 | 描述 |
+| -------- | -------- |
+| OH_AI_COMPCODE_CORE | Minspore Core的代码。 |
+| OH_AI_COMPCODE_LITE | Minspore Lite的代码。 |
+
+
+### OH_AI_DataType
+
+
+```
+enum OH_AI_DataType
+```
+
+**描述:**
+
+MSTensor保存的数据支持的类型。
+
+| 枚举值 | 描述 |
+| -------- | -------- |
+| OH_AI_DATATYPE_UNKNOWN | 未知的数据类型。 |
+| OH_AI_DATATYPE_OBJECTTYPE_STRING | String数据类型。 |
+| OH_AI_DATATYPE_OBJECTTYPE_LIST | List数据类型。 |
+| OH_AI_DATATYPE_OBJECTTYPE_TUPLE | Tuple数据类型。 |
+| OH_AI_DATATYPE_OBJECTTYPE_TENSOR | TensorList数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_BEGIN | Number类型的起始。 |
+| OH_AI_DATATYPE_NUMBERTYPE_BOOL | Bool数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_INT8 | Int8数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_INT16 | 表示Int16数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_INT32 | 表示Int32数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_INT64 | 表示Int64数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_UINT8 | 表示UInt8数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_UINT16 | 表示UInt16数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_UINT32 | 表示UInt32数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_UINT64 | 表示UInt64数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 | 表示Float16数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 | 表示Float32数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 | 表示Float64数据类型。 |
+| OH_AI_DATATYPE_NUMBERTYPE_END | 表示Number类型的结尾。 |
+| OH_AI_DataTypeInvalid | 表示无效的数据类型。 |
+
+
+### OH_AI_DeviceType
+
+
+```
+enum OH_AI_DeviceType
+```
+
+**描述:**
+
+设备类型信息,包含了目前支持的设备类型。
+
+| 枚举值 | 描述 |
+| -------- | -------- |
+| OH_AI_DEVICETYPE_CPU | 设备类型是CPU。 |
+| OH_AI_DEVICETYPE_KIRIN_NPU | 设备类型是麒麟NPU。 |
+| OH_AI_DEVICETYPE_INVALID | 设备类型无效。 |
+
+
+### OH_AI_Format
+
+
+```
+enum OH_AI_Format
+```
+
+**描述:**
+
+MSTensor保存的数据支持的排列格式。
+
+| 枚举值 | 描述 |
+| -------- | -------- |
+| OH_AI_FORMAT_NCHW | 表示NCHW排列。 |
+| OH_AI_FORMAT_NHWC | 表示NHWC排列。 |
+| OH_AI_FORMAT_NHWC4 | 表示NHWC4排列。 |
+| OH_AI_FORMAT_HWKC | 表示HWKC排列。 |
+| OH_AI_FORMAT_HWCK | 表示HWCK排列。 |
+| OH_AI_FORMAT_KCHW | 表示KCHW排列。 |
+| OH_AI_FORMAT_CKHW | 表示CKHW排列。 |
+| OH_AI_FORMAT_KHWC | 表示KHWC排列。 |
+| OH_AI_FORMAT_CHWK | 表示CHWK排列。 |
+| OH_AI_FORMAT_HW | 表示HW排列。 |
+| OH_AI_FORMAT_HW4 | 表示HW4排列。 |
+| OH_AI_FORMAT_NC | 表示NC排列。 |
+| OH_AI_FORMAT_NC4 | 表示NC4排列。 |
+| OH_AI_FORMAT_NC4HW4 | 表示NC4HW4排列。 |
+| OH_AI_FORMAT_NCDHW | 表示NCDHW排列。 |
+| OH_AI_FORMAT_NWC | 表示NWC排列。 |
+| OH_AI_FORMAT_NCW | 表示NCW排列。 |
+
+
+### OH_AI_ModelType
+
+
+```
+enum OH_AI_ModelType
+```
+
+**描述:**
+
+模型文件的类型。
+
+| 枚举值 | 描述 |
+| -------- | -------- |
+| OH_AI_MODELTYPE_MINDIR | 模型类型是MindIR。 |
+| OH_AI_MODELTYPE_INVALID | 模型类型无效。 |
+
+
+### OH_AI_Status
+
+
+```
+enum OH_AI_Status
+```
+
+**描述:**
+
+Minspore的状态码。
+
+| 枚举值 | 描述 |
+| -------- | -------- |
+| OH_AI_STATUS_SUCCESS | 通用的成功状态码。 |
+| OH_AI_STATUS_CORE_FAILED | Mindspore Core 失败状态码。 |
+| OH_AI_STATUS_LITE_ERROR | Mindspore Lite 异常状态码。 |
+| OH_AI_STATUS_LITE_NULLPTR | Mindspore Lite 空指针状态码。 |
+| OH_AI_STATUS_LITE_PARAM_INVALID | Mindspore Lite 参数异常状态码。 |
+| OH_AI_STATUS_LITE_NO_CHANGE | Mindspore Lite 未改变状态码。 |
+| OH_AI_STATUS_LITE_SUCCESS_EXIT | Mindspore Lite 没有错误但是退出的状态码。 |
+| OH_AI_STATUS_LITE_MEMORY_FAILED | Mindspore Lite 内存分配失败的状态码。 |
+| OH_AI_STATUS_LITE_NOT_SUPPORT | Mindspore Lite 功能未支持的状态码。 |
+| OH_AI_STATUS_LITE_THREADPOOL_ERROR | Mindspore Lite 线程池异常状态码。 |
+| OH_AI_STATUS_LITE_UNINITIALIZED_OBJ | Mindspore Lite 未初始化状态码。 |
+| OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE | Mindspore Lite 张量溢出错误的状态码。 |
+| OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR | Mindspore Lite 输入张量异常的状态码。 |
+| OH_AI_STATUS_LITE_REENTRANT_ERROR | Mindspore Lite 重入异常的状态码。 |
+| OH_AI_STATUS_LITE_GRAPH_FILE_ERROR | Mindspore Lite 文件异常状态码。 |
+| OH_AI_STATUS_LITE_NOT_FIND_OP | Mindspore Lite 未找到算子的状态码。 |
+| OH_AI_STATUS_LITE_INVALID_OP_NAME | Mindspore Lite 无效算子状态码。 |
+| OH_AI_STATUS_LITE_INVALID_OP_ATTR | Mindspore Lite 无效算子超参数状态码。 |
+| OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE | Mindspore Lite 算子执行失败的状态码。 |
+| OH_AI_STATUS_LITE_FORMAT_ERROR | Mindspore Lite 张量格式异常状态码。 |
+| OH_AI_STATUS_LITE_INFER_ERROR | Mindspore Lite 形状推理异常状态码。 |
+| OH_AI_STATUS_LITE_INFER_INVALID | Mindspore Lite 无效的形状推理的状态码。 |
+| OH_AI_STATUS_LITE_INPUT_PARAM_INVALID | Mindspore Lite 用户输入的参数无效状态码。 |
+
+
+## **函数说明**
+
+
+### OH_AI_ContextAddDeviceInfo()
+
+
+```
+OH_AI_API void OH_AI_ContextAddDeviceInfo (OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info )
+```
+
+**描述:**
+
+添加运行设备信息。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+
+
+### OH_AI_ContextCreate()
+
+
+```
+OH_AI_API OH_AI_ContextHandle OH_AI_ContextCreate ()
+```
+
+**描述:**
+
+创建一个上下文的对象。
+
+**返回:**
+
+指向上下文信息的[OH_AI_ContextHandle](#oh_ai_contexthandle)。
+
+
+### OH_AI_ContextDestroy()
+
+
+```
+OH_AI_API void OH_AI_ContextDestroy (OH_AI_ContextHandle * context)
+```
+
+**描述:**
+
+释放上下文对象。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| context | 指向[OH_AI_ContextHandle](#oh_ai_contexthandle)的二级指针,上下文销毁后会对context置为空指针。 |
+
+
+### OH_AI_ContextGetEnableParallel()
+
+
+```
+OH_AI_API bool OH_AI_ContextGetEnableParallel (const OH_AI_ContextHandle context)
+```
+
+**描述:**
+
+获取是否支持算子间并行。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
+
+**返回:**
+
+是否支持并行。true 为支持并行, false 为不支持并行。
+
+
+### OH_AI_ContextGetThreadAffinityCoreList()
+
+
+```
+OH_AI_API const int32_t* OH_AI_ContextGetThreadAffinityCoreList (const OH_AI_ContextHandle context, size_t * core_num )
+```
+
+**描述:**
+
+获取CPU绑核列表。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
+| core_num | 该参数是输出参数,表示核的数量。 |
+
+**返回:**
+
+CPU绑核列表。
+
+
+### OH_AI_ContextGetThreadAffinityMode()
+
+
+```
+OH_AI_API int OH_AI_ContextGetThreadAffinityMode (const OH_AI_ContextHandle context)
+```
+
+**描述:**
+
+获取运行时线程绑定CPU核心的策略。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
+
+**返回:**
+
+绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为小核优先。
+
+
+### OH_AI_ContextGetThreadNum()
+
+
+```
+OH_AI_API int32_t OH_AI_ContextGetThreadNum (const OH_AI_ContextHandle context)
+```
+
+**描述:**
+
+获取线程数量。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
+
+**返回:**
+
+当前的线程数量。
+
+
+### OH_AI_ContextSetEnableParallel()
+
+
+```
+OH_AI_API void OH_AI_ContextSetEnableParallel (OH_AI_ContextHandle context, bool is_parallel )
+```
+
+**描述:**
+
+设置运行时是否支持并行。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
+| is_parallel | 是否支持并行。true 为支持并行, false 为不支持并行。 |
+
+
+### OH_AI_ContextSetThreadAffinityCoreList()
+
+
+```
+OH_AI_API void OH_AI_ContextSetThreadAffinityCoreList (OH_AI_ContextHandle context, const int32_t * core_list, size_t core_num )
+```
+
+**描述:**
+
+设置运行时线程绑定CPU核心的列表。
+
+例如:当core_list=[2,6,8]时,则线程会在CPU的第2,6,8个核心上运行。 如果对于同一个上下文对象,调用了[OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode)和[OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist) 这两个函数,则仅[OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist)的core_list参数生效,而[OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode)的 mode参数不生效。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
+| core_list | CPU绑核的列表。 |
+| core_num | 核的数量,它就代表**core_list**的长度。 |
+
+
+### OH_AI_ContextSetThreadAffinityMode()
+
+
+```
+OH_AI_API void OH_AI_ContextSetThreadAffinityMode (OH_AI_ContextHandle context, int mode )
+```
+
+**描述:**
+
+设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大核与小核。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
+| mode | 绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为小核优先。 |
+
+
+### OH_AI_ContextSetThreadNum()
+
+
+```
+OH_AI_API void OH_AI_ContextSetThreadNum (OH_AI_ContextHandle context, int32_t thread_num )
+```
+
+**描述:**
+
+设置运行时的线程数量。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle) |
+| thread_num | 运行时的线程数量。 |
+
+
+### OH_AI_DeviceInfoCreate()
+
+
+```
+OH_AI_API OH_AI_DeviceInfoHandle OH_AI_DeviceInfoCreate (OH_AI_DeviceType device_type)
+```
+
+**描述:**
+
+创建一个设备信息对象。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_type | 设备类型, 具体见[OH_AI_DeviceType](#oh_ai_devicetype)。 |
+
+**返回:**
+
+指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。
+
+
+### OH_AI_DeviceInfoDestroy()
+
+
+```
+OH_AI_API void OH_AI_DeviceInfoDestroy (OH_AI_DeviceInfoHandle * device_info)
+```
+
+**描述:**
+
+释放设备信息实例。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+
+
+### OH_AI_DeviceInfoGetDeviceType()
+
+
+```
+OH_AI_API OH_AI_DeviceType OH_AI_DeviceInfoGetDeviceType (const OH_AI_DeviceInfoHandle device_info)
+```
+
+**描述:**
+
+获取设备的类型。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+
+**返回:**
+
+生产商设备类型。
+
+
+### OH_AI_DeviceInfoGetEnableFP16()
+
+
+```
+OH_AI_API bool OH_AI_DeviceInfoGetEnableFP16 (const OH_AI_DeviceInfoHandle device_info)
+```
+
+**描述:**
+
+获取是否开启float16推理模式, 仅CPU/GPU设备可用。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+
+**返回:**
+
+设置是否开启float16推理模式。
+
+
+### OH_AI_DeviceInfoGetFrequency()
+
+
+```
+OH_AI_API int OH_AI_DeviceInfoGetFrequency (const OH_AI_DeviceInfoHandle device_info)
+```
+
+**描述:**
+
+获取NPU的频率类型,仅NPU设备可用。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+
+**返回:**
+
+NPU的频率类型。取值范围为0-4,1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。
+
+
+### OH_AI_DeviceInfoGetProvider()
+
+
+```
+OH_AI_API const char* OH_AI_DeviceInfoGetProvider (const OH_AI_DeviceInfoHandle device_info)
+```
+
+**描述:**
+
+获取生产商的名称。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+
+**返回:**
+
+生产商的名称。
+
+
+### OH_AI_DeviceInfoGetProviderDevice()
+
+
+```
+OH_AI_API const char* OH_AI_DeviceInfoGetProviderDevice (const OH_AI_DeviceInfoHandle device_info)
+```
+
+**描述:**
+
+获取生产商设备的名称。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+
+**返回:**
+
+生产商设备的名称。
+
+
+### OH_AI_DeviceInfoSetEnableFP16()
+
+
+```
+OH_AI_API void OH_AI_DeviceInfoSetEnableFP16 (OH_AI_DeviceInfoHandle device_info, bool is_fp16 )
+```
+
+**描述:**
+
+设置是否开启float16推理模式,仅CPU/GPU设备可用。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+| is_fp16 | 是否开启float16推理模式。 |
+
+
+### OH_AI_DeviceInfoSetFrequency()
+
+
+```
+OH_AI_API void OH_AI_DeviceInfoSetFrequency (OH_AI_DeviceInfoHandle device_info, int frequency )
+```
+
+**描述:**
+
+设置NPU的频率,仅NPU设备可用。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+| frequency | 频率类型,取值范围为0-4,默认是3。1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。 |
+
+
+### OH_AI_DeviceInfoSetProvider()
+
+
+```
+OH_AI_API void OH_AI_DeviceInfoSetProvider (OH_AI_DeviceInfoHandle device_info, const char * provider )
+```
+
+**描述:**
+
+设置供应商的名称。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+| provider | 供应商的名称。 |
+
+
+### OH_AI_DeviceInfoSetProviderDevice()
+
+
+```
+OH_AI_API void OH_AI_DeviceInfoSetProviderDevice (OH_AI_DeviceInfoHandle device_info, const char * device )
+```
+
+**描述:**
+
+设置生产商设备的名称。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
+| device | 生产商设备名称。 例如: CPU。 |
+
+
+### OH_AI_ModelBuild()
+
+
+```
+OH_AI_API OH_AI_Status OH_AI_ModelBuild (OH_AI_ModelHandle model, const void * model_data, size_t data_size, OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context )
+```
+
+**描述:**
+
+从内存缓冲区加载并编译MindSpore模型。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| model | 模型对象指针。 |
+| model_data | 内存中已经加载的模型数据地址。 |
+| data_size | 模型数据的长度。 |
+| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 |
+| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
+
+**返回:**
+
+枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回MSStatus::kMSStatusSuccess则证明创建成功。
+
+
+### OH_AI_ModelBuildFromFile()
+
+
+```
+OH_AI_API OH_AI_Status OH_AI_ModelBuildFromFile (OH_AI_ModelHandle model, const char * model_path, OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context )
+```
+
+**描述:**
+
+通过模型文件加载并编译MindSpore模型。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| model | 模型对象指针。 |
+| model_path | 模型文件路径。 |
+| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 |
+| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
+
+**返回:**
+
+枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回MSStatus::kMSStatusSuccess则证明创建成功。
+
+
+### OH_AI_ModelCreate()
+
+
+```
+OH_AI_API OH_AI_ModelHandle OH_AI_ModelCreate ()
+```
+
+**描述:**
+
+创建一个模型对象。
+
+**返回:**
+
+模型对象指针。
+
+
+### OH_AI_ModelDestroy()
+
+
+```
+OH_AI_API void OH_AI_ModelDestroy (OH_AI_ModelHandle * model)
+```
+
+**描述:**
+
+释放一个模型对象。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| model | 模型对象指针。 |
+
+
+### OH_AI_ModelGetInputByTensorName()
+
+
+```
+OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetInputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name )
+```
+
+**描述:**
+
+通过张量名获取模型的输入张量。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| model | 模型对象指针。 |
+| tensor_name | 张量名称。 |
+
+**返回:**
+
+tensor_name所对应的输入张量的张量指针,如果输入中没有该张量则返回空。
+
+
+### OH_AI_ModelGetInputs()
+
+
+```
+OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetInputs (const OH_AI_ModelHandle model)
+```
+
+**描述:**
+
+获取模型的输入张量数组结构体。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| model | 模型对象指针。 |
+
+**返回:**
+
+模型输入对应的张量数组结构体。
+
+
+### OH_AI_ModelGetOutputByTensorName()
+
+
+```
+OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetOutputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name )
+```
+
+**描述:**
+
+通过张量名获取模型的输出张量。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| model | 模型对象指针。 |
+| tensor_名称 | 张量名称。 |
+
+**返回:**
+
+tensor_name所对应的输入张量的张量指针,如果输出中没有该张量则返回空。
+
+
+### OH_AI_ModelGetOutputs()
+
+
+```
+OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetOutputs (const OH_AI_ModelHandle model)
+```
+
+**描述:**
+
+获取模型的输出张量数组结构体。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| model | 模型对象指针。 |
+
+**返回:**
+
+模型输出对应的张量数组结构体。
+
+
+### OH_AI_ModelPredict()
+
+
+```
+OH_AI_API OH_AI_Status OH_AI_ModelPredict (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs, OH_AI_TensorHandleArray * outputs, const OH_AI_KernelCallBack before, const OH_AI_KernelCallBack after )
+```
+
+**描述:**
+
+执行模型推理。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| model | 模型对象指针。 |
+| inputs | 模型输入对应的张量数组结构体。 |
+| outputs | 模型输出对应的张量数组结构体的指针。 |
+| before | 模型推理前执行的回调函数。 |
+| after | 模型推理后执行的回调函数。 |
+
+**返回:**
+
+枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回MSStatus::kMSStatusSuccess则证明创建成功。
+
+
+### OH_AI_ModelResize()
+
+
+```
+OH_AI_API OH_AI_Status OH_AI_ModelResize (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs, OH_AI_ShapeInfo * shape_infos, size_t shape_info_num )
+```
+
+**描述:**
+
+调整已编译模型的输入形状。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| model | 模型对象指针。 |
+| inputs | 模型输入对应的张量数组结构体。 |
+| shape_infos | 输入形状信息数组,按模型输入顺序排列的由形状信息组成的数组,模型会按顺序依次调整张量形状。 |
+| shape_info_num | 形状信息数组的长度。 |
+
+**返回:**
+
+枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回MSStatus::kMSStatusSuccess则证明创建成功。
+
+
+### OH_AI_TensorClone()
+
+
+```
+OH_AI_API OH_AI_TensorHandle OH_AI_TensorClone (OH_AI_TensorHandle tensor)
+```
+
+**描述:**
+
+深拷贝一个张量。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 待拷贝张量的指针。 |
+
+**返回:**
+
+指向新张量对象句柄。
+
+
+### OH_AI_TensorCreate()
+
+
+```
+OH_AI_API OH_AI_TensorHandle OH_AI_TensorCreate (const char *name, OH_AI_DataType type, const int64_t * shape, size_t shape_num, const void * data, size_t data_len )
+```
+
+**描述:**
+
+创建一个张量对象。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| 名称 | 张量名称 |
+| type | 张量的数据类型 |
+| shape | 张量的维度数组。 |
+| shape_num | 张量维度数组长度。 |
+| data | 指向数据的指针。 |
+| data_len | 数据的长度。 |
+
+**返回:**
+
+指向张量对象句柄。
+
+
+### OH_AI_TensorDestroy()
+
+
+```
+OH_AI_API void OH_AI_TensorDestroy (OH_AI_TensorHandle * tensor)
+```
+
+**描述:**
+
+释放张量对象。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 指向张量句柄的二级指针。 |
+
+
+### OH_AI_TensorGetData()
+
+
+```
+OH_AI_API const void* OH_AI_TensorGetData (const OH_AI_TensorHandle tensor)
+```
+
+**描述:**
+
+获取张量数据的指针。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+
+**返回:**
+
+张量数据的指针。
+
+
+### OH_AI_TensorGetDataSize()
+
+
+```
+OH_AI_API size_t OH_AI_TensorGetDataSize (const OH_AI_TensorHandle tensor)
+```
+
+**描述:**
+
+获取张量中的数据的字节数大小。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+
+**返回:**
+
+张量数据的字节数大小。
+
+
+### OH_AI_TensorGetDataType()
+
+
+```
+OH_AI_API OH_AI_DataType OH_AI_TensorGetDataType (const OH_AI_TensorHandle tensor)
+```
+
+**描述:**
+
+获取张量类型。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+
+**返回:**
+
+张量的数据类型。
+
+
+### OH_AI_TensorGetElementNum()
+
+
+```
+OH_AI_API int64_t OH_AI_TensorGetElementNum (const OH_AI_TensorHandle tensor)
+```
+
+**描述:**
+
+获取张量元素数量。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+
+**返回:**
+
+张量的元素数量。
+
+
+### OH_AI_TensorGetFormat()
+
+
+```
+OH_AI_API OH_AI_Format OH_AI_TensorGetFormat (const OH_AI_TensorHandle tensor)
+```
+
+**描述:**
+
+获取张量数据的排列方式。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+
+**返回:**
+
+张量数据的排列方式。
+
+
+### OH_AI_TensorGetMutableData()
+
+
+```
+OH_AI_API void* OH_AI_TensorGetMutableData (const OH_AI_TensorHandle tensor)
+```
+
+**描述:**
+
+获取可变的张量数据指针。如果数据为空则会开辟内存。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+
+**返回:**
+
+张量数据的指针。
+
+
+### OH_AI_TensorGetName()
+
+
+```
+OH_AI_API const char* OH_AI_TensorGetName (const OH_AI_TensorHandle tensor)
+```
+
+**描述:**
+
+获取张量的名称。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+
+**返回:**
+
+张量的名称。
+
+
+### OH_AI_TensorGetShape()
+
+
+```
+OH_AI_API const int64_t* OH_AI_TensorGetShape (const OH_AI_TensorHandle tensor, size_t * shape_num )
+```
+
+**描述:**
+
+获取张量的形状。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+| shape_num | 该参数是输出参数,形状数组的长度会写入该变量。 |
+
+**返回:**
+
+形状数组。
+
+
+### OH_AI_TensorSetData()
+
+
+```
+OH_AI_API void OH_AI_TensorSetData (OH_AI_TensorHandle tensor, void * data )
+```
+
+**描述:**
+
+设置张量的数据。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+| data | 指向数据的指针。 |
+
+
+### OH_AI_TensorSetDataType()
+
+
+```
+OH_AI_API void OH_AI_TensorSetDataType (OH_AI_TensorHandle tensor, OH_AI_DataType type )
+```
+
+**描述:**
+
+设置张量的数据类型。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+| type | 数据类型,具体见[OH_AI_DataType](#oh_ai_datatype)。 |
+
+
+### OH_AI_TensorSetFormat()
+
+
+```
+OH_AI_API void OH_AI_TensorSetFormat (OH_AI_TensorHandle tensor, OH_AI_Format format )
+```
+
+**描述:**
+
+设置张量数据的排列方式。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+| format | 张量数据排列方式。 |
+
+
+### OH_AI_TensorSetName()
+
+
+```
+OH_AI_API void OH_AI_TensorSetName (OH_AI_TensorHandle tensor, const char *name )
+```
+
+**描述:**
+
+设置张量的名称。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+| 名称 | 张量名称。 |
+
+
+### OH_AI_TensorSetShape()
+
+
+```
+OH_AI_API void OH_AI_TensorSetShape (OH_AI_TensorHandle tensor, const int64_t * shape, size_t shape_num )
+```
+
+**描述:**
+
+设置张量的形状。
+
+**参数:**
+
+| 名称 | 描述 |
+| -------- | -------- |
+| tensor | 张量对象句柄。 |
+| shape | 形状数组。 |
+| shape_num | 张量形状数组长度。 |
diff --git a/zh-cn/application-dev/reference/native-apis/_o_h___a_i___call_back_param.md b/zh-cn/application-dev/reference/native-apis/_o_h___a_i___call_back_param.md
new file mode 100644
index 0000000000000000000000000000000000000000..9572e0c292919053e7aa036a8ce3311f81d0a17d
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/_o_h___a_i___call_back_param.md
@@ -0,0 +1,52 @@
+# OH_AI_CallBackParam
+
+
+## 概述
+
+回调函数中传入的算子信息。
+
+**自从:**
+
+9
+
+**相关模块:**
+
+[MindSpore](_mind_spore.md)
+
+
+## 汇总
+
+
+### 成员变量
+
+| 成员变量名称 | 描述 |
+| -------- | -------- |
+| [node_name](#node_name) | 算子名称。 |
+| [node_type](#node_type) | 算子类型。 |
+
+
+## 结构体成员变量说明
+
+
+### node_name
+
+
+```
+char* OH_AI_CallBackParam::node_name
+```
+
+**描述:**
+
+算子名称。
+
+
+### node_type
+
+
+```
+char* OH_AI_CallBackParam::node_type
+```
+
+**描述:**
+
+算子类型。
diff --git a/zh-cn/application-dev/reference/native-apis/_o_h___a_i___shape_info.md b/zh-cn/application-dev/reference/native-apis/_o_h___a_i___shape_info.md
new file mode 100644
index 0000000000000000000000000000000000000000..e4a1a1da154d2e335fd4c4a50fc3290b6c6901f4
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/_o_h___a_i___shape_info.md
@@ -0,0 +1,52 @@
+# OH_AI_ShapeInfo
+
+
+## 概述
+
+维度信息,最大的维度为MS_MAX_SHAPE_NUM。
+
+**自从:**
+
+9
+
+**相关模块:**
+
+[MindSpore](_mind_spore.md)
+
+
+## 汇总
+
+
+### 成员变量
+
+| 成员变量名称 | 描述 |
+| -------- | -------- |
+| [shape_num](#shape_num) | 维度数组长度。 |
+| [shape](#shape) [OH_AI_MAX_SHAPE_NUM] | 维度数组。 |
+
+
+## 结构体成员变量说明
+
+
+### shape
+
+
+```
+int64_t OH_AI_ShapeInfo::shape[OH_AI_MAX_SHAPE_NUM]
+```
+
+**描述:**
+
+维度数组。
+
+
+### shape_num
+
+
+```
+size_t OH_AI_ShapeInfo::shape_num
+```
+
+**描述:**
+
+维度数组长度。
diff --git a/zh-cn/application-dev/reference/native-apis/_o_h___a_i___tensor_handle_array.md b/zh-cn/application-dev/reference/native-apis/_o_h___a_i___tensor_handle_array.md
new file mode 100644
index 0000000000000000000000000000000000000000..b6999b75fdadba53588176ec8e5d8667dbe891e7
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/_o_h___a_i___tensor_handle_array.md
@@ -0,0 +1,52 @@
+# OH_AI_TensorHandleArray
+
+
+## 概述
+
+张量数组结构体,用于存储张量数组指针和张量数组长度。
+
+**自从:**
+
+9
+
+**相关模块:**
+
+[MindSpore](_mind_spore.md)
+
+
+## 汇总
+
+
+### 成员变量
+
+| 成员变量名称 | 描述 |
+| -------- | -------- |
+| [handle_num](#handle_num) | 张量数组长度。 |
+| [handle_list](#handle_list) | 指向张量数组的指针。 |
+
+
+## 结构体成员变量说明
+
+
+### handle_list
+
+
+```
+OH_AI_TensorHandle* OH_AI_TensorHandleArray::handle_list
+```
+
+**描述:**
+
+指向张量数组的指针。
+
+
+### handle_num
+
+
+```
+size_t OH_AI_TensorHandleArray::handle_num
+```
+
+**描述:**
+
+张量数组长度。
diff --git a/zh-cn/application-dev/reference/native-apis/context_8h.md b/zh-cn/application-dev/reference/native-apis/context_8h.md
new file mode 100644
index 0000000000000000000000000000000000000000..3e8e1c05f91e5105290f48aa695ee42a60584f61
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/context_8h.md
@@ -0,0 +1,53 @@
+# context.h
+
+
+## 概述
+
+提供了Context相关的接口,可以配置运行时信息。
+
+**自从:**
+
+9
+
+**相关模块:**
+
+[MindSpore](_mind_spore.md)
+
+
+## 汇总
+
+
+### 类型定义
+
+| 类型定义名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_ContextHandle](_mind_spore.md#oh_ai_contexthandle) | Mindspore的上下文信息的指针,该指针会指向Context。 |
+| [OH_AI_DeviceInfoHandle](_mind_spore.md#oh_ai_deviceinfohandle) | Mindspore的运行设备信息的指针。 |
+
+
+### 函数
+
+| 函数名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_ContextCreate](_mind_spore.md#oh_ai_contextcreate) () | 创建一个上下文的对象。 |
+| [OH_AI_ContextDestroy](_mind_spore.md#oh_ai_contextdestroy) (OH_AI_ContextHandle \*context) | 释放上下文对象。 |
+| [OH_AI_ContextSetThreadNum](_mind_spore.md#oh_ai_contextsetthreadnum) (OH_AI_ContextHandle context, int32_t thread_num) | 设置运行时的线程数量。 |
+| [OH_AI_ContextGetThreadNum](_mind_spore.md#oh_ai_contextgetthreadnum) (const OH_AI_ContextHandle context) | 获取线程数量。 |
+| [OH_AI_ContextSetThreadAffinityMode](_mind_spore.md#oh_ai_contextsetthreadaffinitymode) (OH_AI_ContextHandle context, int mode) | 设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大核与小核。 |
+| [OH_AI_ContextGetThreadAffinityMode](_mind_spore.md#oh_ai_contextgetthreadaffinitymode) (const OH_AI_ContextHandle context) | 获取运行时线程绑定CPU核心的策略。 |
+| [OH_AI_ContextSetThreadAffinityCoreList](_mind_spore.md#oh_ai_contextsetthreadaffinitycorelist) (OH_AI_ContextHandle context, const int32_t \*core_list, size_t core_num) | 设置运行时线程绑定CPU核心的列表。 |
+| [OH_AI_ContextGetThreadAffinityCoreList](_mind_spore.md#oh_ai_contextgetthreadaffinitycorelist) (const OH_AI_ContextHandle context, size_t \*core_num) | 获取CPU绑核列表。 |
+| [OH_AI_ContextSetEnableParallel](_mind_spore.md#oh_ai_contextsetenableparallel) (OH_AI_ContextHandle context, bool is_parallel) | 设置运行时是否支持并行。 |
+| [OH_AI_ContextGetEnableParallel](_mind_spore.md#oh_ai_contextgetenableparallel) (const OH_AI_ContextHandle context) | 获取是否支持算子间并行。 |
+| [OH_AI_ContextAddDeviceInfo](_mind_spore.md#oh_ai_contextadddeviceinfo) (OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info) | 添加运行设备信息。 |
+| [OH_AI_DeviceInfoCreate](_mind_spore.md#oh_ai_deviceinfocreate) (OH_AI_DeviceType device_type) | 创建一个设备信息对象。 |
+| [OH_AI_DeviceInfoDestroy](_mind_spore.md#oh_ai_deviceinfodestroy) (OH_AI_DeviceInfoHandle \*device_info) | 释放设备信息实例。 |
+| [OH_AI_DeviceInfoSetProvider](_mind_spore.md#oh_ai_deviceinfosetprovider) (OH_AI_DeviceInfoHandle device_info, const char \*provider) | 设置供应商的名称。 |
+| [OH_AI_DeviceInfoGetProvider](_mind_spore.md#oh_ai_deviceinfogetprovider) (const OH_AI_DeviceInfoHandle device_info) | 获取生产商的名称。 |
+| [OH_AI_DeviceInfoSetProviderDevice](_mind_spore.md#oh_ai_deviceinfosetproviderdevice) (OH_AI_DeviceInfoHandle device_info, const char \*device) | 设置生产商设备的名称。 |
+| [OH_AI_DeviceInfoGetProviderDevice](_mind_spore.md#oh_ai_deviceinfogetproviderdevice) (const OH_AI_DeviceInfoHandle device_info) | 获取生产商设备的名称。 |
+| [OH_AI_DeviceInfoGetDeviceType](_mind_spore.md#oh_ai_deviceinfogetdevicetype) (const OH_AI_DeviceInfoHandle device_info) | 获取设备的类型。 |
+| [OH_AI_DeviceInfoSetEnableFP16](_mind_spore.md#oh_ai_deviceinfosetenablefp16) (OH_AI_DeviceInfoHandle device_info, bool is_fp16) | 设置是否开启float16推理模式,仅CPU/GPU设备可用。 |
+| [OH_AI_DeviceInfoGetEnableFP16](_mind_spore.md#oh_ai_deviceinfogetenablefp16) (const OH_AI_DeviceInfoHandle device_info) | 获取是否开启float16推理模式, 仅CPU/GPU设备可用。 |
+| [OH_AI_DeviceInfoSetFrequency](_mind_spore.md#oh_ai_deviceinfosetfrequency) (OH_AI_DeviceInfoHandle device_info, int frequency) | 设置NPU的频率,仅NPU设备可用。 |
+| [OH_AI_DeviceInfoGetFrequency](_mind_spore.md#oh_ai_deviceinfogetfrequency) (const OH_AI_DeviceInfoHandle device_info) | 获取NPU的频率类型,仅NPU设备可用。 |
diff --git a/zh-cn/application-dev/reference/native-apis/data__type_8h.md b/zh-cn/application-dev/reference/native-apis/data__type_8h.md
new file mode 100644
index 0000000000000000000000000000000000000000..dab395553e993750cef8c932b3c133feddb41087
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/data__type_8h.md
@@ -0,0 +1,31 @@
+# data_type.h
+
+
+## 概述
+
+声明了张量的数据的类型。
+
+**自从:**
+
+9
+
+**相关模块:**
+
+[MindSpore](_mind_spore.md)
+
+
+## 汇总
+
+
+### 类型定义
+
+| 类型定义名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_DataType](_mind_spore.md#oh_ai_datatype) | MSTensor保存的数据支持的类型。 |
+
+
+### 枚举
+
+| 枚举名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_DataType](_mind_spore.md#oh_ai_datatype) {
OH_AI_DATATYPE_UNKNOWN = 0,
OH_AI_DATATYPE_OBJECTTYPE_STRING = 12,
OH_AI_DATATYPE_OBJECTTYPE_LIST = 13,
OH_AI_DATATYPE_OBJECTTYPE_TUPLE = 14,
OH_AI_DATATYPE_OBJECTTYPE_TENSOR = 17,
OH_AI_DATATYPE_NUMBERTYPE_BEGIN = 29,
OH_AI_DATATYPE_NUMBERTYPE_BOOL = 30,
OH_AI_DATATYPE_NUMBERTYPE_INT8 = 32,
OH_AI_DATATYPE_NUMBERTYPE_INT16 = 33,
OH_AI_DATATYPE_NUMBERTYPE_INT32 = 34,
OH_AI_DATATYPE_NUMBERTYPE_INT64 = 35,
OH_AI_DATATYPE_NUMBERTYPE_UINT8 = 37,
OH_AI_DATATYPE_NUMBERTYPE_UINT16 = 38,
OH_AI_DATATYPE_NUMBERTYPE_UINT32 = 39,
OH_AI_DATATYPE_NUMBERTYPE_UINT64 = 40,
OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 = 42,
OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 = 43,
OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 = 44,
OH_AI_DATATYPE_NUMBERTYPE_END = 46,
OH_AI_DataTypeInvalid = INT32_MAX } | MSTensor保存的数据支持的类型。 |
diff --git a/zh-cn/application-dev/reference/native-apis/format_8h.md b/zh-cn/application-dev/reference/native-apis/format_8h.md
new file mode 100644
index 0000000000000000000000000000000000000000..c066abf72baae153f14b2e9135c5bb540468be1e
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/format_8h.md
@@ -0,0 +1,31 @@
+# format.h
+
+
+## 概述
+
+提供张量数据的排列格式。
+
+**自从:**
+
+9
+
+**相关模块:**
+
+[MindSpore](_mind_spore.md)
+
+
+## 汇总
+
+
+### 类型定义
+
+| 类型定义名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_Format](_mind_spore.md#oh_ai_format) | MSTensor保存的数据支持的排列格式。 |
+
+
+### 枚举
+
+| 枚举名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_Format](_mind_spore.md#oh_ai_format) {
OH_AI_FORMAT_NCHW = 0,
OH_AI_FORMAT_NHWC = 1,
OH_AI_FORMAT_NHWC4 = 2,
OH_AI_FORMAT_HWKC = 3,
OH_AI_FORMAT_HWCK = 4,
OH_AI_FORMAT_KCHW = 5,
OH_AI_FORMAT_CKHW = 6,
OH_AI_FORMAT_KHWC = 7,
OH_AI_FORMAT_CHWK = 8,
OH_AI_FORMAT_HW = 9,
OH_AI_FORMAT_HW4 = 10,
OH_AI_FORMAT_NC = 11,
OH_AI_FORMAT_NC4 = 12,
OH_AI_FORMAT_NC4HW4 = 13,
OH_AI_FORMAT_NCDHW = 15,
OH_AI_FORMAT_NWC = 16,
OH_AI_FORMAT_NCW = 17 } | MSTensor保存的数据支持的排列格式。 |
diff --git a/zh-cn/application-dev/reference/native-apis/model_8h.md b/zh-cn/application-dev/reference/native-apis/model_8h.md
new file mode 100644
index 0000000000000000000000000000000000000000..4c594004683214fd9fc29a0a0185a3883fc19c5e
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/model_8h.md
@@ -0,0 +1,60 @@
+# model.h
+
+
+## 概述
+
+提供了模型相关接口,可以用于模型创建、模型推理等。
+
+**自从:**
+
+9
+
+**相关模块:**
+
+[MindSpore](_mind_spore.md)
+
+
+## 汇总
+
+
+### 结构体
+
+| 结构体名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) | 张量数组结构体,用于存储张量数组指针和张量数组长度 |
+| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) | 维度信息,最大的维度为**MS_MAX_SHAPE_NUM** |
+| [OH_AI_CallBackParam](_o_h___a_i___call_back_param.md) | 回调函数中传入的算子信息。 |
+
+
+### 宏定义
+
+| 宏定义名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_MAX_SHAPE_NUM](_mind_spore.md#oh_ai_max_shape_num) 32 | 维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。 |
+
+
+### 类型定义
+
+| 类型定义名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_ModelHandle](_mind_spore.md#oh_ai_modelhandle) | 指向模型对象的指针。 |
+| [OH_AI_TensorHandleArray](_mind_spore.md#oh_ai_tensorhandlearray) | 张量数组结构体,用于存储张量数组指针和张量数组长度 |
+| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) | 维度信息,最大的维度为**MS_MAX_SHAPE_NUM** |
+| [OH_AI_CallBackParam](_mind_spore.md#oh_ai_callbackparam) | 回调函数中传入的算子信息。 |
+| [OH_AI_KernelCallBack](_mind_spore.md#oh_ai_kernelcallback)) (const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs, const OH_AI_CallBackParam kernel_Info) | 回调函数指针。 |
+
+
+### 函数
+
+| 函数名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_ModelCreate](_mind_spore.md#oh_ai_modelcreate) () | 创建一个模型对象。 |
+| [OH_AI_ModelDestroy](_mind_spore.md#oh_ai_modeldestroy) (OH_AI_ModelHandle \*model) | 释放一个模型对象。 |
+| [OH_AI_ModelBuild](_mind_spore.md#oh_ai_modelbuild) (OH_AI_ModelHandle model, const void \*model_data,
size_t data_size, OH_AI_ModelType model_type,
const OH_AI_ContextHandle model_context) | 从内存缓冲区加载并编译MindSpore模型。 |
+| [OH_AI_ModelBuildFromFile](_mind_spore.md#oh_ai_modelbuildfromfile) (OH_AI_ModelHandle model,
const char \*model_path, OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context) | 通过模型文件加载并编译MindSpore模型。 |
+| [OH_AI_ModelResize](_mind_spore.md#oh_ai_modelresize) (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs,
OH_AI_ShapeInfo \*shape_infos, size_t shape_info_num) | 调整已编译模型的输入形状。 |
+| [OH_AI_ModelPredict](_mind_spore.md#oh_ai_modelpredict) (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs, OH_AI_TensorHandleArray \*outputs, const OH_AI_KernelCallBack before, const OH_AI_KernelCallBack after) | 执行模型推理。 |
+| [OH_AI_ModelGetInputs](_mind_spore.md#oh_ai_modelgetinputs) (const OH_AI_ModelHandle model) | 获取模型的输入张量数组结构体。 |
+| [OH_AI_ModelGetOutputs](_mind_spore.md#oh_ai_modelgetoutputs) (const OH_AI_ModelHandle model) | 获取模型的输出张量数组结构体。 |
+| [OH_AI_ModelGetInputByTensorName](_mind_spore.md#oh_ai_modelgetinputbytensorname) (const OH_AI_ModelHandle model, const char \*tensor_name) | 通过张量名获取模型的输入张量。 |
+| [OH_AI_ModelGetOutputByTensorName](_mind_spore.md#oh_ai_modelgetoutputbytensorname) (const OH_AI_ModelHandle model, const char \*tensor_name) | 通过张量名获取模型的输出张量。 |
diff --git a/zh-cn/application-dev/reference/native-apis/status_8h.md b/zh-cn/application-dev/reference/native-apis/status_8h.md
new file mode 100644
index 0000000000000000000000000000000000000000..062e7a8cda5c6e84f8c8adf10f15f462463ffb0c
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/status_8h.md
@@ -0,0 +1,32 @@
+# status.h
+
+
+## 概述
+
+提供了Mindspore Lite运行时的状态码。
+
+**自从:**
+
+9
+
+**相关模块:**
+
+[MindSpore](_mind_spore.md)
+
+
+## 汇总
+
+
+### 类型定义
+
+| 类型定义名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_Status](_mind_spore.md#oh_ai_status) | Minspore的状态码。 |
+
+
+### 枚举
+
+| 枚举名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_CompCode](_mind_spore.md#oh_ai_compcode) { OH_AI_COMPCODE_CORE = 0x00000000u, OH_AI_COMPCODE_LITE = 0xF0000000u } | Minspore不同组件的代码。 |
+| [OH_AI_Status](_mind_spore.md#oh_ai_status) {
OH_AI_STATUS_SUCCESS = 0,
OH_AI_STATUS_CORE_FAILED = OH_AI_COMPCODE_CORE \| 0x1,
OH_AI_STATUS_LITE_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -1),
OH_AI_STATUS_LITE_NULLPTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -2),
OH_AI_STATUS_LITE_PARAM_INVALID = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -3),
OH_AI_STATUS_LITE_NO_CHANGE = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -4),
OH_AI_STATUS_LITE_SUCCESS_EXIT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -5),
OH_AI_STATUS_LITE_MEMORY_FAILED = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -6),
OH_AI_STATUS_LITE_NOT_SUPPORT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -7),
OH_AI_STATUS_LITE_THREADPOOL_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -8),
OH_AI_STATUS_LITE_UNINITIALIZED_OBJ = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -9),
OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE, OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR,
OH_AI_STATUS_LITE_REENTRANT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -102), OH_AI_STATUS_LITE_GRAPH_FILE_ERROR,
OH_AI_STATUS_LITE_NOT_FIND_OP = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -300),
OH_AI_STATUS_LITE_INVALID_OP_NAME = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -301),
OH_AI_STATUS_LITE_INVALID_OP_ATTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -302),
OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE,
OH_AI_STATUS_LITE_FORMAT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -400),
OH_AI_STATUS_LITE_INFER_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -500),
OH_AI_STATUS_LITE_INFER_INVALID = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -501),
OH_AI_STATUS_LITE_INPUT_PARAM_INVALID } | Minspore的状态码。 |
diff --git a/zh-cn/application-dev/reference/native-apis/tensor_8h.md b/zh-cn/application-dev/reference/native-apis/tensor_8h.md
new file mode 100644
index 0000000000000000000000000000000000000000..7bd9ff9ff13dae6e644cdf9c711e3a6d65a7247c
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/tensor_8h.md
@@ -0,0 +1,46 @@
+# tensor.h
+
+
+## 概述
+
+提供了张量相关的接口,可用于创建和修改张量信息。
+
+**自从:**
+
+9
+
+**相关模块:**
+
+[MindSpore](_mind_spore.md)
+
+
+## 汇总
+
+
+### 类型定义
+
+| 类型定义名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_TensorHandle](_mind_spore.md#oh_ai_tensorhandle) | 指向张量对象句柄。 |
+
+
+### 函数
+
+| 函数名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_TensorCreate](_mind_spore.md#oh_ai_tensorcreate) (const char \*name, OH_AI_DataType type, const int64_t \*shape,
size_t shape_num, const void \*data, size_t data_len) | 创建一个张量对象。 |
+| [OH_AI_TensorDestroy](_mind_spore.md#oh_ai_tensordestroy) (OH_AI_TensorHandle \*tensor) | 释放张量对象。 |
+| [OH_AI_TensorClone](_mind_spore.md#oh_ai_tensorclone) (OH_AI_TensorHandle tensor) | 深拷贝一个张量。 |
+| [OH_AI_TensorSetName](_mind_spore.md#oh_ai_tensorsetname) (OH_AI_TensorHandle tensor, const char \ *name) | 设置张量的名称。 |
+| [OH_AI_TensorGetName](_mind_spore.md#oh_ai_tensorgetname) (const OH_AI_TensorHandle tensor) | 获取张量的名称。 |
+| [OH_AI_TensorSetDataType](_mind_spore.md#oh_ai_tensorsetdatatype) (OH_AI_TensorHandle tensor, OH_AI_DataType type) | 设置张量的数据类型。 |
+| [OH_AI_TensorGetDataType](_mind_spore.md#oh_ai_tensorgetdatatype) (const OH_AI_TensorHandle tensor) | 获取张量类型。 |
+| [OH_AI_TensorSetShape](_mind_spore.md#oh_ai_tensorsetshape) (OH_AI_TensorHandle tensor,
const int64_t \*shape, size_t shape_num) | 设置张量的形状。 |
+| [OH_AI_TensorGetShape](_mind_spore.md#oh_ai_tensorgetshape) (const OH_AI_TensorHandle tensor, size_t \*shape_num) | 获取张量的形状。 |
+| [OH_AI_TensorSetFormat](_mind_spore.md#oh_ai_tensorsetformat) (OH_AI_TensorHandle tensor, OH_AI_Format format) | 设置张量数据的排列方式。 |
+| [OH_AI_TensorGetFormat](_mind_spore.md#oh_ai_tensorgetformat) (const OH_AI_TensorHandle tensor) | 获取张量数据的排列方式。 |
+| [OH_AI_TensorSetData](_mind_spore.md#oh_ai_tensorsetdata) (OH_AI_TensorHandle tensor, void \*data) | 设置张量的数据。 |
+| [OH_AI_TensorGetData](_mind_spore.md#oh_ai_tensorgetdata) (const OH_AI_TensorHandle tensor) | 获取张量数据的指针。 |
+| [OH_AI_TensorGetMutableData](_mind_spore.md#oh_ai_tensorgetmutabledata) (const OH_AI_TensorHandle tensor) | 获取可变的张量数据指针。如果数据为空则会开辟内存。 |
+| [OH_AI_TensorGetElementNum](_mind_spore.md#oh_ai_tensorgetelementnum) (const OH_AI_TensorHandle tensor) | 获取张量元素数量。 |
+| [OH_AI_TensorGetDataSize](_mind_spore.md#oh_ai_tensorgetdatasize) (const OH_AI_TensorHandle tensor) | 获取张量中的数据的字节数大小。 |
diff --git a/zh-cn/application-dev/reference/native-apis/types_8h.md b/zh-cn/application-dev/reference/native-apis/types_8h.md
new file mode 100644
index 0000000000000000000000000000000000000000..2ea30fcea1b967628cc0715277563aabd1c9d009
--- /dev/null
+++ b/zh-cn/application-dev/reference/native-apis/types_8h.md
@@ -0,0 +1,33 @@
+# types.h
+
+
+## 概述
+
+提供了MindSpore Lite支持的模型文件类型和设备类型。
+
+**自从:**
+
+9
+
+**相关模块:**
+
+[MindSpore](_mind_spore.md)
+
+
+## 汇总
+
+
+### 类型定义
+
+| 类型定义名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_ModelType](_mind_spore.md#oh_ai_modeltype) | 模型文件的类型。 |
+| [OH_AI_DeviceType](_mind_spore.md#oh_ai_devicetype) | 设备类型信息,包含了目前支持的设备类型。 |
+
+
+### 枚举
+
+| 枚举名称 | 描述 |
+| -------- | -------- |
+| [OH_AI_ModelType](_mind_spore.md#oh_ai_modeltype) {
OH_AI_MODELTYPE_MINDIR = 0,
OH_AI_MODELTYPE_INVALID = 0xFFFFFFFF } | 模型文件的类型。 |
+| [OH_AI_DeviceType](_mind_spore.md#oh_ai_devicetype) {
OH_AI_DEVICETYPE_CPU = 0,
OH_AI_DEVICETYPE_KIRIN_NPU,
OH_AI_DEVICETYPE_INVALID = 100 } | 设备类型信息,包含了目前支持的设备类型。 |
diff --git a/zh-cn/application-dev/security/Readme-CN.md b/zh-cn/application-dev/security/Readme-CN.md
index a8aca58e95bd95b7d6e2eb4bb86ecf97467cb23f..5369b1392693a9a7ea842d1f9f96bd6bc2243788 100644
--- a/zh-cn/application-dev/security/Readme-CN.md
+++ b/zh-cn/application-dev/security/Readme-CN.md
@@ -2,7 +2,8 @@
- 访问控制
- [访问控制(权限)开发概述](accesstoken-overview.md)
- - [访问控制(权限)开发指导](accesstoken-guidelines.md)
+ - [访问控制授权申请指导](accesstoken-guidelines.md)
+ - [访问控制权限校验指导](permission-verify-guidelines.md)
- [应用权限列表](permission-list.md)
- 用户认证
- [用户认证开发概述](userauth-overview.md)
@@ -10,6 +11,9 @@
- 密钥管理
- [HUKS开发概述](huks-overview.md)
- [HUKS开发指导](huks-guidelines.md)
+- 加密算法库框架
+ - [加密算法库框架概述](cryptoFramework-overview.md)
+ - [加密算法框架开发指导](cryptoFramework-guidelines.md)
- Hap包签名工具
- [Hap包签名工具概述](hapsigntool-overview.md)
- [Hap包签名工具指导](hapsigntool-guidelines.md)
diff --git a/zh-cn/application-dev/security/cryptoFramework-guidelines.md b/zh-cn/application-dev/security/cryptoFramework-guidelines.md
new file mode 100644
index 0000000000000000000000000000000000000000..25ec2c1d5f90c205e85feb869efd7356b70bc7b1
--- /dev/null
+++ b/zh-cn/application-dev/security/cryptoFramework-guidelines.md
@@ -0,0 +1,917 @@
+# 加解密算法库框架开发指导
+## 使用加解密操作
+**场景说明**
+
+使用加解密操作中,典型的场景有:
+1. 使用对称密钥的加解密操作
+2. 使用非对称密钥的加解密操作
+
+**接口及参数说明**
+
+详细接口说明可参考[API参考](../reference/apis/js-apis-cryptoFramework.md)。
+
+以上场景设计的常用接口如下表所示:
+
+|实例名|接口名|描述|
+|---|---|---|
+|cryptoFramework|createCipher(transformation : string) : Cipher|根据transformation设置的算法参数创建Cipher对象|
+|Cipher|init(opMode : CryptoMode, key : Key, params : ParamsSpec, callback : AsyncCallback\) : void|使用callback方式设置密钥并初始化Cipher对象|
+|Cipher|init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\|使用Promise方式设置密钥并初始化Cipher对象|
+|Cipher|update(data : DataBlob, callback : AsyncCallback\) : void|使用callback方式添加加解密数据|
+|Cipher|update(data : DataBlob) : Promise\|使用Promise方式添加加解密数据|
+|Cipher|doFinal(data : DataBlob, callback : AsyncCallback\) : void|使用callback方式结束对所有数据的加解密|
+|Cipher|doFinal(data : DataBlob) : Promise\|使用Promise方式结束对所有数据的加解密|
+
+**开发步骤**
+
+示例1:使用对称密钥的加解密操作
+
+1. 生成对称密钥生成器。
+2. 通过密钥生成器生成对称密钥。
+3. 生成加解密生成器。
+4. 通过加解密生成器加密或解密数据。
+
+以AES GCM以Promise方式加解密为例:
+
+```js
+import cryptoFramework from '@ohos.security.cryptoFramework';
+
+var globalCipher;
+var globalGcmParams;
+var globalKey;
+var globalCipherText;
+
+function genGcmParamsSpec() {
+ let arr = [0, 0, 0, 0 , 0, 0, 0, 0, 0, 0 , 0, 0]; // 12 bytes
+ let dataIv = new Uint8Array(arr);
+ let ivBlob = {data : dataIv};
+
+ arr = [0, 0, 0, 0 , 0, 0, 0, 0]; // 8 bytes
+ let dataAad = new Uint8Array(arr);
+ let aadBlob = {data : dataAad};
+
+ arr = [0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0]; // 16 bytes
+ let dataTag = new Uint8Array(arr);
+ let tagBlob = {data : dataTag};
+ let gcmParamsSpec = {iv : ivBlob, aad : aadBlob, authTag : tagBlob, algoName : "GcmParamsSpec"};
+ return gcmParamsSpec;
+}
+
+// 可理解的字符串转成字节流
+function stringToUint8Array(str) {
+ let arr = [];
+ for (let i = 0, j = str.length; i < j; ++i) {
+ arr.push(str.charCodeAt(i));
+ }
+ return new Uint8Array(arr);
+}
+
+// 字节流转成可理解的字符串
+function uint8ArrayToShowStr(uint8Array) {
+ return Array.prototype.map
+ .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2))
+ .join('');
+}
+
+// 字节流以16进制输出
+function uint8ArrayToString(array) {
+ let arrayString = '';
+ for (let i = 0; i < array.length; i++) {
+ arrayString += String.fromCharCode(array[i]);
+ }
+ return arrayString;
+}
+
+function genKeyMaterialBlob() {
+ let arr = [
+ 0xba, 0x3d, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56,
+ 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c,
+ 0xba, 0x3b, 0xc2, 0x71, 0xab, 0xa0, 0x30, 0x72]; // keyLen = 192 (24 bytes)
+ let keyMaterial = new Uint8Array(arr);
+ return {data : keyMaterial};
+}
+
+
+// AES GCM模式示例,自动生成密钥(promise写法)
+function testAesGcm() {
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ resolve('testAesGcm');
+ }, 10)
+ }).then(() => {
+ // 生成对称密钥生成器
+ let symAlgoName = 'AES128';
+ let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName);
+ if (symKeyGenerator == null) {
+ console.error('createSymKeyGenerator failed');
+ return;
+ }
+ console.info(`symKeyGenerator algName: ${symKeyGenerator.algName}`);
+ // 通过密钥生成器随机生成128位长度的对称密钥
+ let promiseSymKey = symKeyGenerator.generateSymKey();
+ // 构造参数
+ globalGcmParams = genGcmParamsSpec();
+
+ // 生成加解密生成器
+ let cipherAlgoName = 'AES128|GCM|PKCS7';
+ try {
+ globalCipher = cryptoFramework.createCipher(cipherAlgoName);
+ console.info(`cipher algName: ${globalCipher.algName}`);
+ } catch (error) {
+ console.error(`createCipher failed, ${error.code}, ${error.message}`);
+ return;
+ }
+ return promiseSymKey;
+ }).then(key => {
+ let encodedKey = key.getEncoded();
+ console.info('key hex:' + uint8ArrayToShowStr(encodedKey.data));
+ globalKey = key;
+ return key;
+ }).then(key => {
+ // 初始化加解密操作环境:开始加密
+ let mode = cryptoFramework.CryptoMode.ENCRYPT_MODE;
+ let promiseInit = globalCipher.init(mode, key, globalGcmParams); // init
+ return promiseInit;
+ }).then(() => {
+ let plainText = {data : stringToUint8Array('this is test!')};
+ let promiseUpdate = globalCipher.update(plainText); // update
+ return promiseUpdate;
+ }).then(updateOutput => {
+ globalCipherText = updateOutput;
+ let promiseFinal = globalCipher.doFinal(null); // doFinal
+ return promiseFinal;
+ }).then(authTag => {
+ // 获取加密后的认证信息
+ globalGcmParams.authTag = authTag;
+ return;
+ }).then(() => {
+ // 初始化加解密操作环境:开始解密
+ let mode = cryptoFramework.CryptoMode.DECRYPT_MODE;
+ let promiseInit = globalCipher.init(mode, globalKey, globalGcmParams); // init
+ return promiseInit;
+ }).then(() => {
+ let promiseUpdate = globalCipher.update(globalCipherText); // update
+ return promiseUpdate;
+ }).then(updateOutput => {
+ console.info('decrypt plainText: ' + uint8ArrayToString(updateOutput.data));
+ let promiseFinal = globalCipher.doFinal(null); // doFinal
+ return promiseFinal;
+ }).then(finalOutput => {
+ if (finalOutput == null) {
+ console.info('GCM finalOutput is null');
+ }
+ }).catch(error => {
+ console.error(`catch error, ${error.code}, ${error.message}`);
+ })
+}
+```
+
+以3DES ECB以callback方式加解密(采用已有数据生成密钥)为例:
+
+```js
+import cryptoFramework from '@ohos.security.cryptoFramework';
+
+var globalCipher;
+var globalGcmParams;
+var globalKey;
+var globalCipherText;
+
+// 可理解的字符串转成字节流
+function stringToUint8Array(str) {
+ let arr = [];
+ for (let i = 0, j = str.length; i < j; ++i) {
+ arr.push(str.charCodeAt(i));
+ }
+ return new Uint8Array(arr);
+}
+
+// 字节流转成可理解的字符串
+function uint8ArrayToShowStr(uint8Array) {
+ return Array.prototype.map
+ .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2))
+ .join('');
+}
+
+// 字节流以16进制输出
+function uint8ArrayToString(array) {
+ let arrayString = '';
+ for (let i = 0; i < array.length; i++) {
+ arrayString += String.fromCharCode(array[i]);
+ }
+ return arrayString;
+}
+
+function genKeyMaterialBlob() {
+ let arr = [
+ 0xba, 0x3d, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56,
+ 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c,
+ 0xba, 0x3b, 0xc2, 0x71, 0xab, 0xa0, 0x30, 0x72]; // keyLen = 192 (24 bytes)
+ let keyMaterial = new Uint8Array(arr);
+ return {data : keyMaterial};
+}
+
+// 3DES ECB模式示例,采用已有数据生成密钥(callback写法)
+function test3DesEcb() {
+ // 生成对称密钥生成器
+ let symAlgoName = '3DES192';
+ let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName);
+ if (symKeyGenerator == null) {
+ console.error('createSymKeyGenerator failed');
+ return;
+ }
+ console.info(`symKeyGenerator algName: ${symKeyGenerator.algName}`);
+
+ // 生成加解密生成器
+ let cipherAlgoName = '3DES192|ECB|PKCS7';
+ try {
+ globalCipher = cryptoFramework.createCipher(cipherAlgoName);
+ console.info(`cipher algName: ${globalCipher.algName}`);
+ } catch (error) {
+ console.error(`createCipher failed, ${error.code}, ${error.message}`);
+ return;
+ }
+
+ // 根据指定的数据,生成对称密钥
+ let keyMaterialBlob = genKeyMaterialBlob();
+ try {
+ symKeyGenerator.convertKey(keyMaterialBlob, (error, key) => {
+ if (error) {
+ console.error(`convertKey error, ${error.code}, ${error.message}`);
+ return;
+ }
+ console.info(`key algName: ${key.algName}`);
+ console.info(`key format: ${key.format}`);
+ let encodedKey = key.getEncoded();
+ console.info('key getEncoded hex: ' + uint8ArrayToShowStr(encodedKey.data));
+ globalKey = key;
+
+ // 初始化加解密操作环境:开始加密
+ let mode = cryptoFramework.CryptoMode.ENCRYPT_MODE;
+ // init
+ globalCipher.init(mode, key, null, (err, ) => {
+ let plainText = {data : stringToUint8Array('this is test!')};
+ // update
+ globalCipher.update(plainText, (err, updateOutput) => {
+ globalCipherText = updateOutput;
+ //doFinal
+ globalCipher.doFinal(null, (err, finalOutput) => {
+ if (error) {
+ console.error(`doFinal error, ${error.code}, ${error.message}`);
+ return;
+ }
+ if (finalOutput != null) {
+ globalCipherText = Array.from(globalCipherText.data);
+ finalOutput = Array.from(finalOutput.data);
+ globalCipherText = globalCipherText.concat(finalOutput);
+ globalCipherText = new Uint8Array(globalCipherText);
+ globalCipherText = {data : globalCipherText};
+ }
+ // 初始化加解密操作环境:开始解密
+ let mode = cryptoFramework.CryptoMode.DECRYPT_MODE;
+ // init
+ globalCipher.init(mode, globalKey, null, (err, ) => {
+ // update
+ globalCipher.update(globalCipherText, (err, updateOutput) => {
+ console.info('decrypt plainText: ' + uint8ArrayToString(updateOutput.data));
+ // doFinal
+ globalCipher.doFinal(null, (error, finalOutput) => {
+ if (finalOutput != null) {
+ console.info("decrypt plainText:" + uint8ArrayToString(finalOutput.data));
+ }
+ })
+ })
+ })
+ })
+ })
+ })
+ })
+ } catch (error) {
+ console.error(`convertKey failed, ${error.code}, ${error.message}`);
+ return;
+ }
+}
+```
+
+示例2:使用非对称密钥的加解密操作
+
+1. 生成RSA密钥。通过createAsyKeyGenerator接口创建AsyKeyGenerator对象,并生成RSA非对称密钥。
+2. 生成Cipher对象。通过createCipher接口创建Cipher对象,执行初始化操作,设置密钥及加解密模式。
+3. 执行加解密操作。通过调用Cipher对象提供的doFinal接口,执行加密操作生成密文或执行解密操作生成明文。
+
+```javascript
+import cryptoFramework from "@ohos.security.cryptoFramework"
+
+let plan = "This is cipher test.";
+
+function stringToUint8Array(str) {
+ var arr = [];
+ for (var i = 0, j = str.length; i < j; ++i) {
+ arr.push(str.charCodeAt(i));
+ }
+ var tmpArray = new Uint8Array(arr);
+ return tmpArray;
+}
+
+function encryptMessageProMise() {
+ let rsaGenerator = cryptoFramework.createAsyKeyGenerator("RSA1024|PRIMES_2");
+ let cipher = cryptoFramework.createCipher("RSA1024|PKCS1");
+ let keyGenPromise = rsaGenerator.generateKeyPair();
+ keyGenPromise.then(rsaKeyPair => {
+ let pubKey = rsaKeyPair.pubKey;
+ return cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, pubKey, null);
+ }).then(() => {
+ let input = { data : stringToUint8Array(plan) };
+ return cipher.doFinal(input);
+ }).then(dataBlob => {
+ console.info("EncryptOutPut is " + dataBlob.data);
+ });
+}
+
+function encryptMessageCallback() {
+ let rsaGenerator = cryptoFramework.createAsyKeyGenerator("RSA1024|PRIMES_2");
+ let cipher = cryptoFramework.createCipher("RSA1024|PKCS1");
+ rsaGenerator.generateKeyPair(function (err, keyPair) {
+ let pubKey = keyPair.pubKey;
+ cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, pubKey, null, function (err, data) {
+ let input = {data : stringToUint8Array(plan) };
+ cipher.doFinal(input, function (err, data) {
+ console.info("EncryptOutPut is " + data.data);
+ })
+ })
+ })
+}
+```
+
+## 使用签名验签操作
+
+**场景说明**
+使用签名验签操作中,典型的场景有:
+1. 使用RSA签名验签操作
+2. 使用ECC签名验签操作
+
+**接口及参数说明**
+
+详细接口说明可参考[API参考](../reference/apis/js-apis-cryptoFramework.md)。
+
+|实例名|接口名|描述|
+|---|---|---|
+|cryptoFramework|createSign(algName : string) : Sign|根据String设置的参数创建Sign对象|
+|Sign|init(priKey : PriKey, callback : AsyncCallback\) : void|使用callback方式设置密钥并初始化Sign对象|
+|Sign|init(priKey : PriKey) : Promise\|使用Promise方式设置密钥并初始化Sign对象|
+|Sign|update(data : DataBlob, callback : AsyncCallback\) : void|使用callback方式添加签名数据|
+|Sign|update(data : DataBlob) : Promise\|用Promise方式添加签名数据|
+|Sign|sign(data : DataBlob, callback : AsyncCallback) : void|使用callback方式签名所有数据|
+|Sign|sign(data : DataBlob) : Promise|使用Promise方式签名所有数据|
+|cryptoFramework|function createVerify(algName : string) : Verify|根据String设置的参数创建Verify对象|
+|Verify|init(priKey : PriKey, callback : AsyncCallback\) : void|使用callback方式设置密钥并初始化Verify对象|
+|Verify|init(priKey : PriKey) : Promise\|使用Promise方式设置密钥并初始化Verify对象|
+|Verify|update(data : DataBlob, callback : AsyncCallback\) : void|使用callback方式添加验签数据|
+|Verify|update(data : DataBlob) : Promise\|用Promise方式添加验签数据|
+|Verify|verify(data : DataBlob, signatureData : DataBlob, callback : AsyncCallback) : void|使用callback方式验签所有数据|
+|Verify|verify(data : DataBlob, signatureData : DataBlob) : Promise|使用Promise方式验签所有数据|
+
+**开发步骤**
+
+示例1:使用RSA签名验签操作
+1. 生成RSA密钥。通过createAsyKeyGenerator接口创建AsyKeyGenerator对象,并生成RSA非对称密钥。
+2. 生成Sign对象。通过createSign接口创建Sign对象,执行初始化操作并设置签名私钥。
+3. 执行签名操作。通过Sign类提供的update接口,添加签名数据,并调用doFinal接口生成数据的签名。
+4. 生成Verify对象。通过createVerify接口创建Verify对象,执行初始化操作并设置验签公钥。
+5. 执行验签操作。通过Verify类提供的update接口,添加签名数据,并调用doFinal接口传入签名进行验签。
+```javascript
+import cryptoFramework from "@ohos.security.cryptoFramework"
+
+function stringToUint8Array(str) {
+ var arr = [];
+ for (var i = 0, j = str.length; i < j; ++i) {
+ arr.push(str.charCodeAt(i));
+ }
+ var tmpArray = new Uint8Array(arr);
+ return tmpArray;
+}
+
+let globalKeyPair;
+let SignMessageBlob;
+let plan1 = "This is Sign test plan1";
+let plan2 = "This is Sign test plan1";
+let input1 = { data : stringToUint8Array(plan1) };
+let input2 = { data : stringToUint8Array(plan2) };
+
+function signMessagePromise() {
+ let rsaGenerator = cryptoFramework.createAsyKeyGenerator("RSA1024|PRIMES_2");
+ let signer = cryptoFramework.createSign("RSA1024|PKCS1|SHA256");
+ let keyGenPromise = rsaGenerator.generateKeyPair();
+ keyGenPromise.then( keyPair => {
+ globalKeyPair = keyPair;
+ let priKey = globalKeyPair.priKey;
+ return signer.init(priKey);
+ }).then(() => {
+ return signer.update(input1);
+ }).then(() => {
+ return signer.sign(input2);
+ }).then(dataBlob => {
+ SignMessageBlob = dataBlob;
+ console.info("sign output is " + SignMessageBlob.data);
+ });
+}
+
+function verifyMessagePromise() {
+ let verifyer = cryptoFramework.createVerify("RSA1024|PKCS1|SHA256");
+ let verifyInitPromise = verifyer.init(globalKeyPair.pubKey);
+ verifyInitPromise.then(() => {
+ return verifyer.update(input1);
+ }).then(() => {
+ return verifyer.verify(input2, SignMessageBlob);
+ }).then(res => {
+ console.log("Verify result is " + res);
+ });
+}
+
+function signMessageCallback() {
+ let rsaGenerator = cryptoFramework.createAsyKeyGenerator("RSA1024|PRIMES_2");
+ let signer = cryptoFramework.createSign("RSA1024|PKCS1|SHA256");
+ rsaGenerator.generateKeyPair(function (err, keyPair) {
+ globalKeyPair = keyPair;
+ let priKey = globalKeyPair.priKey;
+ signer.init(priKey, function (err, data) {
+ signer.update(input1, function (err, data) {
+ signer.sign(input2, function (err, data) {
+ SignMessageBlob = data;
+ console.info("sign output is " + SignMessageBlob.data);
+ });
+ });
+ });
+ });
+}
+
+function verifyMessageCallback() {
+ let verifyer = cryptoFramework.createVerify("RSA1024|PKCS1|SHA25");
+ verifyer.init(globalKeyPair.pubKey, function (err, data) {
+ verifyer.update(input1, function(err, data) {
+ verifyer.verify(input2, SignMessageBlob, function(err, data) {
+ console.info("verify result is " + data);
+ });
+ });
+ })
+}
+```
+
+示例2:使用ECDSA操作
+1. 生成ECC密钥。通过createAsyKeyGenerator接口创建AsyKeyGenerator对象,并生成ECC非对称密钥。
+2. 生成Sign对象。通过createSign接口创建Sign对象,执行初始化操作并设置签名私钥。
+3. 执行签名操作。通过Sign类提供的update接口,添加签名数据,并调用doFinal接口生成数据的签名。
+4. 生成Verify对象。通过createVerify接口创建Verify对象,执行初始化操作并设置验签公钥。
+5. 执行验签操作。通过Verify类提供的update接口,添加签名数据,并调用doFinal接口传入签名进行验签。
+
+```javascript
+import cryptoFramework from "@ohos.security.cryptoFramework"
+
+function stringToUint8Array(str) {
+ var arr = [];
+ for (var i = 0, j = str.length; i < j; ++i) {
+ arr.push(str.charCodeAt(i));
+ }
+ var tmpArray = new Uint8Array(arr);
+ return tmpArray;
+}
+
+let globalKeyPair;
+let SignMessageBlob;
+let plan1 = "This is Sign test plan1";
+let plan2 = "This is Sign test plan1";
+let input1 = { data : stringToUint8Array(plan1) };
+let input2 = { data : stringToUint8Array(plan2) };
+
+function signMessagePromise() {
+ let eccGenerator = cryptoFramework.createAsyKeyGenerator("ECC256");
+ let signer = cryptoFramework.createSign("ECC256|SHA256");
+ let keyGenPromise = eccGenerator.generateKeyPair();
+ keyGenPromise.then( keyPair => {
+ globalKeyPair = keyPair;
+ let priKey = globalKeyPair.priKey;
+ return signer.init(priKey);
+ }).then(() => {
+ return signer.update(input1);
+ }).then(() => {
+ return signer.sign(input2);
+ }).then(dataBlob => {
+ SignMessageBlob = dataBlob;
+ console.info("sign output is " + SignMessageBlob.data);
+ });
+}
+
+function verifyMessagePromise() {
+ let verifyer = cryptoFramework.createVerify("ECC256|SHA256");
+ let verifyInitPromise = verifyer.init(globalKeyPair.pubKey);
+ verifyInitPromise.then(() => {
+ return verifyer.update(input1);
+ }).then(() => {
+ return verifyer.verify(input2, SignMessageBlob);
+ }).then(res => {
+ console.log("Verify result is " + res);
+ });
+}
+
+function signMessageCallback() {
+ let eccGenerator = cryptoFramework.createAsyKeyGenerator("ECC256");
+ let signer = cryptoFramework.createSign("ECC256|SHA256");
+ eccGenerator.generateKeyPair(function (err, keyPair) {
+ globalKeyPair = keyPair;
+ let priKey = globalKeyPair.priKey;
+ signer.init(priKey, function (err, data) {
+ signer.update(input1, function (err, data) {
+ signer.sign(input2, function (err, data) {
+ SignMessageBlob = data;
+ console.info("sign output is " + SignMessageBlob.data);
+ });
+ });
+ });
+ });
+}
+
+function verifyMessageCallback() {
+ let verifyer = cryptoFramework.createVerify("ECC256|SHA256");
+ verifyer.init(globalKeyPair.pubKey, function (err, data) {
+ verifyer.update(input1, function(err, data) {
+ verifyer.verify(input2, SignMessageBlob, function(err, data) {
+ console.info("verify result is " + data);
+ });
+ });
+ })
+}
+```
+
+## 使用摘要操作
+
+**场景说明**
+
+使用摘要操作的主要场景为:
+
+用户指定摘要算法(如SHA256)生成Md实例,并输入单段或多段需要摘要的信息,进行摘要计算更新,并返回消息摘要计算结果,在指定算法后可获取当前算法名与摘要计算长度(字节)
+
+**接口及参数说明**
+
+详细接口说明可参考[API参考](../reference/apis/js-apis-cryptoFramework.md)。
+
+| 实例名 | 接口名 | 描述 |
+| --------------- | ------------------------------------------------------------ | -------------------------------------------------- |
+| cryptoFramework | function createMd(algName : string) : Md; | 指定摘要算法,生成摘要操作实例Md |
+| Md | update(input : DataBlob, callback : AsyncCallback\) : void; | 接受用户输入数据,通过Callback的方式,异步更新摘要 |
+| Md | update(input : DataBlob) : Promise\; | 接受用户输入数据,通过Promise的方式,异步更新摘要 |
+| Md | digest(callback : AsyncCallback\) : void; | 通过Callback的方式,返回结果 |
+| Md | digest() : Promise\; | 通过Promise的方式,返回结果 |
+| Md | getMdLength() : number; | 获取摘要的长度(由指定的摘要算法决定) |
+| Md | readonly algName : string; | 获取当前设置的摘要算法名 |
+
+**开发步骤**
+
+1. 设置算法,通过接口`createMd`生成摘要操作实例
+2. 接受用户数据,通过接口`update`,更新摘要,此步骤可重复
+3. 通过接口`digest`,返回摘要计算结果
+4. 获取当前摘要算法名与摘要计算长度
+
+```javascript
+import cryptoFramework from "@ohos.security.cryptoFramework"
+
+// turn string into uint8Arr
+function stringToUint8Array(str) {
+ var arr = [];
+ for (var i = 0, j = str.length; i < j; ++i) {
+ arr.push(str.charCodeAt(i));
+ }
+ var tmpUint8Array = new Uint8Array(arr);
+ return tmpUint8Array;
+}
+
+// generate dataBlob with given length
+function GenDataBlob(dataBlobLen) {
+ var dataBlob;
+ if (dataBlobLen == 12) {
+ dataBlob = {data: stringToUint8Array("my test data")};
+ } else {
+ console.error("GenDataBlob: dataBlobLen is invalid");
+ dataBlob = {data: stringToUint8Array("my test data")};
+ }
+ return dataBlob;
+}
+
+// md with promise async
+function doMdByPromise(algName) {
+ var md;
+ try {
+ md = cryptoFramework.createMd(algName);
+ } catch (error) {
+ console.error("[Promise]: error code: " + error.code + ", message is: " + error.message);
+ }
+ console.error("[Promise]: Md algName is: " + md.algName);
+ var promiseMdUpdate = md.update(GenDataBlob(12));
+ promiseMdUpdate.then(() => {
+ var PromiseMdDigest = md.digest();
+ return PromiseMdDigest;
+ }).then(mdOutput => {
+ console.error("[Promise]: MD result: " + mdOutput.data);
+ var mdLen = md.getMdLength();
+ console.error("[Promise]: MD len: " + mdLen);
+ }).catch(error => {
+ console.error("[Promise]: error: " + error.message);
+ });
+}
+
+// md with callback async
+function doMdByCallback(algName) {
+ var md;
+ try {
+ md = cryptoFramework.createMd(algName);
+ } catch (error) {
+ console.error("[Callback]: error code: " + error.code + ", message is: " + error.message);
+ }
+ console.error("[Callback]: Md algName is: " + md.algName);
+ md.update(GenDataBlob(12), (err,) => {
+ if (err) {
+ console.error("[Callback]: err: " + err.code);
+ }
+ md.digest((err1, mdOutput) => {
+ if (err1) {
+ console.error("[Callback]: err: " + err1.code);
+ } else {
+ console.error("[Callback]: MD result: " + mdOutput.data);
+ var mdLen = md.getMdLength();
+ console.error("[Callback]: MD len: " + mdLen);
+ }
+ });
+ });
+}
+```
+
+## 使用密钥协商操作
+
+**场景说明**
+
+使用签名验签操作中,典型的场景有:
+
+使用ECDH操作。
+
+**接口及参数说明**
+
+详细接口说明可参考[API参考](../reference/apis/js-apis-cryptoFramework.md)。
+
+|实例名|接口名|描述|
+|---|---|---|
+|cryptoFramework|createKeyAgreement(algName : string) : KeyAgreement|根据String设置的参数创建KeyAgreement对象|
+|KeyAgreement|generateSecret(priKey : PriKey, pubKey : PubKey, callback : AsyncCallback\) : void|使用callback方式进行密钥协商|
+|KeyAgreement|generateSecret(priKey : PriKey, pubKey : PubKey) : Promise\|使用Promise方式进行密钥协商|
+
+**开发步骤**
+
+1. 生成ECC密钥。通过createAsyKeyGenerator接口创建AsyKeyGenerator对象,并生成ECC非对称密钥。
+2. 基于ECC密钥的私钥及公钥执行ECDH操作。
+
+```javascript
+import cryptoFramework from "@ohos.security.cryptoFramework"
+
+function stringToUint8Array(str) {
+ var arr = [];
+ for (var i = 0, j = str.length; i < j; ++i) {
+ arr.push(str.charCodeAt(i));
+ }
+ var tmpArray = new Uint8Array(arr);
+ return tmpArray;
+}
+
+let globalKeyPair;
+
+function ecdhPromise() {
+ let eccGenerator = cryptoFramework.createAsyKeyGenerator("ECC256");
+ let eccKeyAgreement = cryptoFramework.createKeyAgreement("ECC256");
+ let keyGenPromise = eccGenerator.generateKeyPair();
+ keyGenPromise.then( keyPair => {
+ globalKeyPair = keyPair;
+ return eccKeyAgreement.generateSecret(keyPair.priKey, keyPair.pubKey);
+ }).then((secret) => {
+ console.info("ecdh output is " + secret.data);
+ }).catch((error) => {
+ console.error("ecdh error.");
+ });
+}
+
+function ecdhCallback() {
+ let eccGenerator = cryptoFramework.createAsyKeyGenerator("ECC256");
+ let eccKeyAgreement = cryptoFramework.createKeyAgreement("ECC256");
+ eccGenerator.generateKeyPair(function (err, keyPair) {
+ globalKeyPair = keyPair;
+ eccKeyAgreement.generateSecret(keyPair.priKey, keyPair.pubKey, function (err, secret) {
+ if (err) {
+ console.error("ecdh error.");
+ return;
+ }
+ console.info("ecdh output is " + secret.data);
+ });
+ });
+}
+```
+
+## 使用消息认证码操作
+
+**场景说明**
+
+使用消息认证码操作的主要场景为:
+
+用户指定摘要算法(如SHA256)生成消息认证码Mac实例,输入对称密钥初始化Mac,并传入单段或多段需要摘要的信息,进行消息认证码计算,并获取消息认证码计算结果,在指定算法后可获取当前算法名与消息认证码计算长度(字节)。
+
+**接口及参数说明**
+
+详细接口说明可参考[API参考](../reference/apis/js-apis-cryptoFramework.md)。
+
+| 实例名 | 接口名 | 描述 |
+| --------------- | ------------------------------------------------------------ | --------------------------------------------------- |
+| cryptoFramework | function createMd(algName : string) : Md; | 指定摘要算法,生成消息认证码实例Mac |
+| Mac | init(key : SymKey, callback : AsyncCallback\) : void; | 接收输入对称密钥,通过Callback的方式,异步初始化MAC |
+| Mac | init(key : SymKey) : Promise\