Dynamically Loading Native Modules in Synchronous Mode
The loadNativeModule API is used to dynamically load native modules in synchronous mode. Using this API increases the time for loading the .so file. You need to evaluate the impact on the functionality.
API Description
loadNativeModule(moduleName: string): Object;
| Parameter | Description |
|---|---|
| moduleName | Name of the module to load. |
NOTE
The name of the module loaded by loadNativeModule is the name provided in dependencies in the oh-package.json5 file of the dependency.
loadNativeModule must be called in the UI main thread.
Dependencies must be configured for the API call regardless of whether the parameter is a constant string or variable expression.
Supported Scenarios
| Scenario | Example |
|---|---|
| System library module | Load @ohos. or @system.. |
| Native module in an application | Load libNativeLibrary.so. |
Usage Example
- Loading a system library module to a HAP
let hilog: ESObject = loadNativeModule("@ohos.hilog");
hilog.info(0, "testTag", "loadNativeModule ohos.hilog success");
- Loading a native library to a HAP
The index.d.ts file of libentry.so is as follows:
//index.d.ts
export const add: (a: number, b: number) => number;
- When loading a local .so library, configure dependencies in the oh-package.json5 file.
{
"dependencies": {
"libentry.so": "file:./src/main/cpp/types/libentry"
}
}
- Configure the build-profile.json5 file.
{
"buildOption": {
"arkOptions": {
"runtimeOnly": {
"packages": [
"libentry.so"
]
}
}
}
}
- Use loadNativeModule to load libentry.so and call the add function.
let module: ESObject = loadNativeModule("libentry.so");
let sum: number = module.add(1, 2);