首先查看日志会看到so无法加载的warning,然后接下来就是相关Native方法无法调用报错。

W     [default] [GetNativeOrCjsExports:54] Load native module failed, so is @normalized:Y&&&libentry.so&

具体原因有两点:目标操作系统类型不对,编译出的so库对应的 CPU架构不对。

DevEco Studio5.0之后的版本,移除了OpenHarmony项目模版,创建的项目默认运行环境为HarmonyOS,需要在工程级的配置文件build-profile.json5中修改app.products节点配置,将目标系统改为OpenHarmony,对应要修改sdk的版本,如下:

"compileSdkVersion": 12,
"targetSdkVersion": 12,
"compatibleSdkVersion": 12,
"runtimeOS": "OpenHarmony",

DevEco Studio5.0中Native工程对应编译产物的CPU架构默认为arm64-v8a,如果CPU为其它架构,则无法正常使用,需要在Native对应模块的build-profile.json中修改buildOption.externalNativeOptions进行配置,添加相应架构的支持,如下:

"externalNativeOptions": {
  "path": "./src/main/cpp/CMakeLists.txt",
  "arguments": "",
  "cppFlags": "",
  "abiFilters": [
    "armeabi-v7a",
    "arm64-v8a"
  ]
}

注意:以上两处修改对应的build-profile.json5文件不同,一个是项目级的一个是模块级的

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐