DevEco Studio5新建的Native工程在OpenHarmony上无法加载so的解决办法
DevEco Studio5.0之后的版本,移除了OpenHarmony项目模版,创建的项目默认运行环境为HarmonyOS,需要在工程级的配置文件。注意:以上两处修改对应的build-profile.json5文件不同,一个是项目级的一个是模块级的。首先查看日志会看到so无法加载的warning,然后接下来就是相关Native方法无法调用报错。具体原因有两点:目标操作系统类型不对,编译出的so库
首先查看日志会看到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文件不同,一个是项目级的一个是模块级的
更多推荐



所有评论(0)