• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# loadNativeModule (同步动态加载系统库接口)
2
3本模块提供了同步动态加载系统库接口的能力。
4
5> **说明:**
6>
7> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 本模块接口仅可在Stage模型下使用。
10
11## loadNativeModule
12
13loadNativeModule(moduleName: string): Object
14
15`loadNativeModule`接口用于同步动态加载native模块,目的是按需加载所需要的模块。使用该接口会增加加载so文件的时间,开发者需评估其对功能的影响。
16
17> **说明:**
18>
19> loadNativeModule加载的模块名指的是依赖方`oh-package.json5`文件的`dependencies`字段内的名称。
20>
21> loadNativeModule接口仅支持在UI主线程中加载native模块。
22>
23> 该接口在使用常量字符串或变量表达式作为参数时,都需要配置依赖。
24
25**系统能力**:SystemCapability.Utils.Lang
26
27**参数:**
28
29| 参数名    | 类型     | 必填      | 说明  |
30| ----- | -------- | ----  | ---------------- |
31| moduleName | string | 是     | 加载的模块名。 |
32
33**返回值:**
34
35| 类型 | 说明 |
36| -------- | -------- |
37| Object | native模块的默认导出。 |
38
39**错误码:**
40
41以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](../apis-arkts/errorcode-utils.md)。
42
43| 错误码ID | 错误信息 |
44| -------- | -------- |
45| 401 | The parameter check failed.|
46| 10200301 | Loading native module failed.|
47
48**loadNativeModule支持的场景**
49
50| 场景            | 示例           |
51| :------------- | :----------------------------- |
52| 系统库模块        | 加载@ohos.或@system.        |
53| 应用内native模块	| 加载libNativeLibrary.so |
54
55**示例1**:HAP加载系统库模块
56
57```js
58let hilog: ESObject = loadNativeModule("@ohos.hilog");
59hilog.info(0, "testTag", "loadNativeModule ohos.hilog success");
60```
61
62**示例2**:HAP加载Native库
63
64libentry.soindex.d.ts文件内容如下:
65
66```javascript
67//index.d.ts
68export const add: (a: number, b: number) => number;
69```
70
711.在加载本地so库时,配置模块级`oh-package.json5`文件的dependencies项。配置说明见[模块级oh-package.json5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-oh-package-json5#zh-cn_topic_0000001792256137_oh-packagejson5-%E5%AD%97%E6%AE%B5%E8%AF%B4%E6%98%8E)72
73```json
74{
75  "dependencies": {
76    "libentry.so": "file:./src/main/cpp/types/libentry"
77  }
78}
79```
80
812.在模块级`build-profile.json5`中进行配置。配置说明见[模块级build-profile.json5文件](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-profile)82
83```json
84{
85  "buildOption": {
86    "arkOptions": {
87      "runtimeOnly": {
88        "packages": [
89          "libentry.so"
90        ]
91      }
92    }
93  }
94}
95```
96
973.使用`loadNativeModule`加载`libentry.so`,调用`add`函数。
98
99```js
100let module: ESObject = loadNativeModule("libentry.so");
101let sum: number = module.add(1, 2);
102```
103