文档管理中心

如何在ArkTS侧引用其他三方so库

解决措施

在ArkTS中引用三方库so需要具备以下三个文件:xxx.so、Index.d.ts和oh-package.json5。其中,Index.d.ts和oh-package.json5在C++模板中自带,也可以手动创建。在需要调用的模块根目录下的oh-package.json5中声明so库的根目录路径。然后在代码中使用import语句引用oh-package.json5中声明的依赖名称。此方案仅适用于已经适配了Native的so库。因此,在编译生成so库时,需要实现功能函数并注册其Native侧接口,同时提供对应的Native侧接口声明文件Index.d.ts和配置文件oh-package.json5。

  1. 将so文件移动到libs文件夹下对应架构的目录。如果在纯ArkTS工程中,还需将编译三方库时生成的libc++\_xxx.so移动到该目录。

  2. 在src/main/cpp/types目录下创建新目录,并将Index.d.ts和oh-package.json5文件移动到该目录下。

  3. 在模块级的oh-package.json5文件中声明该 so 库的根目录路径。
    收起
    自动换行
    深色代码主题
    复制
    1. "dependencies": {
    2. "libimportthirdpartylibraries.so": "file:./src/main/cpp/types/libimportthirdpartylibraries",
    3. "libapplication.so": "file:./src/main/cpp/types/libapplication"
    4. },
  4. 在代码中引用并调用oh-package.json5中声明的依赖。
    收起
    自动换行
    深色代码主题
    复制
    1. import testNapi from 'libimportthirdpartylibraries.so';
    2. import myNapi from 'libapplication.so';
    3. @Entry
    4. @Component
    5. struct Index {
    6. @State message: string = 'Hello World';
    7. build() {
    8. Row() {
    9. Column() {
    10. Text(this.message)
    11. .fontSize(50)
    12. .fontWeight(FontWeight.Bold)
    13. .onClick(() => {
    14. console.info(`MyTest NAPI 2 + 3 = ${myNapi.add(2, 3)}`);
    15. console.info(`MyTest NAPI 2 - 3 = ${testNapi.sub(2, 3)}`);
    16. })
    17. }
    18. .width('100%')
    19. }
    20. .height('100%')
    21. }
    22. }

运行结果:

参考链接

在ArkTS侧引用三方so库

在 FAQ 中进行搜索
请输入您想要搜索的关键词