HarmonyOS鸿蒙Next中rnoh_app找不到so库

HarmonyOS鸿蒙Next中rnoh_app找不到so库

在单独的模块har里,已配置

"buildOption": {
  "nativeLib": {
    "excludeFromHar": false
  },
  "externalNativeOptions": {
    "path": "./src/main/cpp/CMakeLists.txt",
    "arguments": "",
    "cppFlags": "",
    "abiFilters": ["x86_64", "arm64-v8a"]
  }
},

打包成功,但是运行进入ReactNative页面报错


更多关于HarmonyOS鸿蒙Next中rnoh_app找不到so库的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

页面报错,有异常信息么

更多关于HarmonyOS鸿蒙Next中rnoh_app找不到so库的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


位置有没有错放?HAR模块的so库必须存放在src/main/libs/<abi>目录下(如arm64-v8ax86_64),且结构需与目标设备ABI架构严格匹配的。。。还有就是HAR模块根目录的oh-package.json5中添加依赖声明

"dependencies": {
  "your_library": "file:./src/main/cpp/types/your_library"
}

暂时想到这么多。。。

在HarmonyOS Next中,rnoh_app找不到so库可能由以下原因导致:

  1. 动态库未正确打包到HAP中,需确认build-profile.json5中配置了对应模块的nativeLibraryPath
  2. 动态库ABI架构不匹配,检查设备CPU架构与libs目录下子目录(armeabi-v7a/arm64-v8a)是否一致
  3. 动态库依赖未满足,使用ldd工具检查so文件的完整依赖链
  4. 权限问题,确认在module.json5中声明了需要的权限

解决方法:

  • 检查动态库路径配置
  • 验证ABI兼容性
  • 确保所有依赖可用
  • 确认权限声明完整

这个问题通常是由于HAR模块中的SO库没有被正确打包到最终应用中导致的。根据你的配置,虽然已经设置了excludeFromHar: false,但还需要检查以下几点:

  1. 确保在HAR模块的build-profile.json5中正确配置了native库路径和ABI过滤:
"buildOption": {
  "napiLib": {
    "path": "./src/main/cpp/CMakeLists.txt",
    "abiFilters": ["arm64-v8a", "x86_64"]
  }
}
  1. 在主模块的build-profile.json5中需要添加对HAR模块的依赖:
"dependencies": {
  "yourHarModule": "file:../yourHarModule"
}
  1. 检查CMakeLists.txt是否正确配置了输出路径,确保SO库会被生成到正确的libs目录下。

  2. 如果问题仍然存在,可以尝试:

  • 清理项目并重新构建
  • 检查构建日志确认SO库是否被正确打包
  • 查看设备上的应用安装目录下是否存在对应的SO文件,
回到顶部