# native_interface.h

#### 概述

提供NativeModule接口的统一入口函数。

**引用文件：** <arkui/native\_interface.h>

**库：** libace\_ndk.z.so

**系统能力：** SystemCapability.ArkUI.ArkUI.Full

**起始版本：** 12

**相关模块：** ArkUI\_NativeModule

**相关示例：** NativeNodeInterfaceSample

#### 汇总

#### 枚举

| 名称 | typedef关键字 | 描述 |
| --- | --- | --- |
| ArkUI_NativeAPIVariantKind | ArkUI_NativeAPIVariantKind | 定义Native接口集合类型。 |

#### 函数

| 名称 | 描述 |
| --- | --- |
| void* OH_ArkUI_QueryModuleInterfaceByName(ArkUI_NativeAPIVariantKind type, const char* structName) | 需调用该函数初始化C-API环境，并获取指定类型的Native模块接口集合。 |

#### 宏定义

| 名称 | 描述 |
| --- | --- |
| OH_ArkUI_GetModuleInterface(nativeAPIVariantKind, structType, structPtr) | 基于结构体类型获取对应结构体指针的宏函数。 |

#### 枚举类型说明

#### ArkUI\_NativeAPIVariantKind

```
enum ArkUI_NativeAPIVariantKind
```

**描述：**

定义Native接口集合类型。

**起始版本：** 12

| 枚举项 | 描述 |
| --- | --- |
| ARKUI_NATIVE_NODE = 0 | UI组件相关接口类型，详见native_node.h中的结构体类型定义。 |
| ARKUI_NATIVE_DIALOG = 1 | 弹窗相关接口类型，详见native_dialog.h中的结构体类型定义。 |
| ARKUI_NATIVE_GESTURE = 2 | 手势相关接口类型，详见native_gesture.h中的结构体类型定义。 |
| ARKUI_NATIVE_ANIMATE = 3 | 动画相关接口类型，详见native_animate.h中的结构体类型定义。 |
| ARKUI_MULTI_THREAD_NATIVE_NODE = 4 | 多线程UI组件相关接口类型，详见native_node.h中的结构体类型定义。 起始版本： 22 |

#### 函数说明

#### OH\_ArkUI\_QueryModuleInterfaceByName()

```
void* OH_ArkUI_QueryModuleInterfaceByName(ArkUI_NativeAPIVariantKind type, const char* structName)
```

**描述：**

需调用该函数初始化C-API环境，并获取指定类型的Native模块接口集合。

**起始版本：** 12

**参数：**

| 参数项 | 描述 |
| --- | --- |
| ArkUI_NativeAPIVariantKind type | ArkUI提供的Native接口集合大类，例如UI组件接口类：ARKUI_NATIVE_NODE, 手势类：ARKUI_NATIVE_GESTURE。 |
| const char* structName | Native接口结构体的名称，通过查询对应头文件内结构体定义，例如位于native_node.h中的"ArkUI_NativeNodeAPI_1"。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| void* | 返回Native接口抽象指针，在转换为具体类型后进行使用。 |

#### OH\_ArkUI\_GetModuleInterface()

```
#define OH_ArkUI_GetModuleInterface(nativeAPIVariantKind, structType, structPtr)                     \
do {                                                                                                 \
        void* anyNativeAPI = OH_ArkUI_QueryModuleInterfaceByName(nativeAPIVariantKind, #structType); \
        if (anyNativeAPI) {                                                                          \
            structPtr = (structType*)(anyNativeAPI);                                                 \
        }                                                                                            \
    } while (0)
```

**描述：**

基于结构体类型获取对应结构体指针的宏函数。此宏函数接收ArkUI\_NativeAPIVariantKind类型枚举参数nativeAPIVariantKind、const char\*类型参数structType、structType\*类型参数structPtr，调用OH\_ArkUI\_QueryModuleInterfaceByName获取Native接口抽象指针，转换为structType\*类型后赋值给structPtr。

**起始版本：** 12

#### OH\_ArkUI\_NativeModule\_GetErrorMessage()

```
const char* OH_ArkUI_NativeModule_GetErrorMessage()
```

**描述：**

获取最新一次的报错信息，包括错误码、方法名称和错误原因。错误码相关信息请参考ArkUI\_ErrorCode。当其他接口返回错误码时，会保存对应的错误信息，通过此接口可获取当前存储的错误信息。返回的字符串是由系统创建的线程局部全局字符串，不得修改其内容。如需任何编辑，请自行创建字符串内容的拷贝副本。该接口返回的信息可能随版本演进而变化，仅用于输出以辅助分析与故障排查，不应作为逻辑判断依据。返回的报错信息无需手动释放。

**起始版本：** 26.0.0

**返回：**

| 类型 | 说明 |
| --- | --- |
| const char* | 最新一次的报错信息，包括错误码、方法名称和错误原因。 |