HarmonyOS鸿蒙Next中解析本地so文件失败

HarmonyOS鸿蒙Next中解析本地so文件失败 我用的端云一体化模板,我只有模拟器没有真机,应用打不开提示本地so文件解析失败。我按照官方文档添加了abifilter,我的libs文件夹下只有arm64,没有x86,怎么解决呀? cke_505.png


更多关于HarmonyOS鸿蒙Next中解析本地so文件失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

开发者你好,

从6.0.0(20)Beta5版本开始,Cloud Foundation Kit支持模拟器开发,但与真机存在部分能力差异,详情请参考“模拟器与真机的差异”和“模拟器支持情况”。

abiFilters,本机的ABI编译环境,包括:arm64-v8a,x86_64。如不配置该参数,编译时默认编译出arm64-v8a架构相关的so。

本地IDE版本6.0.0 Release,模拟器版本6.0.0(20)测试可以正常运行,无打不开提示本地so文件的问题。使用的模拟器是不低于6.0.0(20)Beta5的模拟器吗?使用的端云一体化模板,也未出现libs文件夹。升级IDE和模拟器版本后是否能解决问题。如果不能,能否提供下详细的模拟器版本,IDE版本。

更多关于HarmonyOS鸿蒙Next中解析本地so文件失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


小伙伴你好,Cloud Foundation Kit 从 6.0.0(20)Beta5 版本开始支持模拟器开发,但与真机存在部分能力差异(如不支持预加载),建议检查 abiFilters 配置及模拟器版本。详情请参考 模拟器与真机的差异

详细说明

1. 模拟器支持与版本要求

  • 支持版本:从 6.0.0(20)Beta5 版本开始,Cloud Foundation Kit 支持模拟器开发。
  • 环境验证:经测试,IDE 6.0.0 Release 配合 模拟器 6.0.0(20) 可正常运行,无本地 so 文件缺失问题。
  • 排查建议:请确保使用的模拟器版本不低于 6.0.0(20)Beta5。若遇到问题,尝试升级 IDE 和模拟器至最新版本。

2. abiFilters 配置

abiFilters 用于指定编译时的 ABI 架构。

  • 本机环境:通常支持 arm64-v8ax86_64
  • 默认机制:如不配置该参数,默认仅编译 arm64-v8a 架构的 so 文件。
  • 解决方案:若在模拟器(通常为 x86_64)上运行遇到 so 文件缺失,建议在模块级 build-profile.json5 中配置 abiFilters,同时支持真机和模拟器架构。
// build-profile.json5
{
  "apiType": "stageMode",
  "buildOption": {
    "externalNativeOptions": {
      "abiFilters": [
        "arm64-v8a",
        "x86_64"
      ]
    }
  }
}

3. 项目结构说明

  • 在使用端云一体化模板时,未出现 libs 文件夹属于正常现象,依赖库通常由构建工具自动管理。

注意事项

  • Cloud Foundation Kit 在模拟器上不支持预加载功能。
  • 确保模拟器架构与 abiFilters 配置匹配。

参考文档

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

端云一体化开发调试还是建议搞一台真机进行开发调试,虽然端云一体化从6.0.0(20) Beta5版本开始支持模拟器开发,但与真机存在部分能力差异,详情请参见“模拟器与真机的差异”。

cke_1181.png

在HarmonyOS Next中解析本地so文件失败,通常是由于so文件与当前设备的CPU架构不匹配导致的。请检查so文件是否为arm64-v8a架构,并确认其已正确放置在libs目录下。若so文件为其他架构,需重新编译或获取对应版本。

问题出在模拟器架构与你的so文件架构不匹配。

你的libs文件夹下只有arm64-v8a的so文件,这是为真机(ARM架构)准备的。而HarmonyOS Next的模拟器(目前)使用的是x86_64架构,无法加载ARM架构的so文件。

解决方案如下:

  1. 获取x86_64架构的so文件:这是最直接的解决方法。联系你的so文件提供方(如第三方SDK厂商),获取对应x86_64架构的版本,并将其放入libs/x86_64目录下。

  2. 修改oh-package.json5中的abis配置:在端云一体化模板中,你需要确保oh-package.json5文件中的abis字段包含了模拟器所用的架构。将配置修改为:

    "abis": [
      "arm64-v8a",
      "x86_64"
    ]
    

    这告诉打包工具需要为这两种架构准备资源。

总结步骤:

  • libs目录下创建x86_64文件夹。
  • 将x86_64版本的so文件放入该文件夹。
  • 更新oh-package.json5中的abis配置,包含"x86_64"
  • 重新构建运行即可。

如果暂时无法获取x86_64的so,你将无法在模拟器上运行包含该native库的功能,只能使用真机进行测试。

回到顶部