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.so的index.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