OpenHarmony 5.0的开发板运行API12 Native C++项目出错问题解决
DevEco Studio 5.0以上版本abiFilters设置armeabi-v7a报错问题解决
一、开发环境交代
-
硬件环境:
-
开发板:触觉智能 OH Purple Pi(RK3366)
-
开发板固件:OpenHarmony 5.0.0.71
-
-
DevEco Studio版本:
-
DevEco Studio 5.0.2 Release
-
构建版本:5.0.7.210
-
-
OpenHarmony SDK版本:API12 Release
二、问题描述
在使用上述DevEco Studio创建Native C++项目后,可以在DevEco Studio自带的模拟器和预览器中实现NDK中的方法调用,但是在Purple Pi开发板上运行时运行到调用NDK方法的位置就会闪退报错:
报错显示无法找到对应的NDK生成的.so动态库文件中的方法,按照报错连接点进去华为开发者文档中描述如下:
按照上述描述,是因为设备支持的Abi类型和C++工程中的Abi类型不匹配导致,在项目build路径下看到默认只生成了arm64-v8a的动态库文件:
在官方开发文档下方也对如何确定设备的Abi类型进行了介绍:
按照官网文档中的步骤通过hdc命令查看Purple Pi的Abi类型为default,同时在system路径下不存在lib64,所以按照文档要求需要在“abiFilters”参数中包含“armeabi-v7a”类型。但是在上图中红色记号笔位置说DevEco Studio Next Developer 5.0.3.200以上就不再支持编译armeabi-v7a架构的so文件,这就很头疼了,在entry模块下的build-profile.json5
文件中配置abiFilters
参数里写上armeabi-v7a
就会标红报错。
报错内容提示armeabi-v7a不支持在HarmonyOS应用上了,那问题的核心就在于如何将项目改为OpenHarmony项目。
三、问题解决
-
替换API 12 的 OpenHarmony SDK 为full sdk
full-sdk在ci下载:https://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist
只需要将full-sdk中的五个压缩文件进行解压,解压后替换到你自己SDK路径下 API12 对应路径中即可
建议删除原有的所有文件夹,直接将解压缩后的文件夹复制进去:
full-sdk中的五个压缩文件(我的环境是Windows,选择的是Windows下面的)和原本DevEco Studio自己下载的五个文件夹是一一对应的,所以直接删除原有的,把解压出来的扔进去就行。
-
修改工程级
build-profile.json5
中参数,使项目变为OpenHarmony项目按照下图中的内容进行修改,目的是把runtimeOS切换为
OpenHarmony
,上方的compileSdkVersion
、compatibleSdkVersion
、targetSdkVersion
建议全写,如果在修改的过程中标红报错,不管,直接点击“sync now”即可,构建一下项目后应该就取消标红了。
-
修改
entry\build-profile.json5
模块下的build-profile.json5中内容,添加armeabi-v7a
到abiFilters
参数下
至此应该就可以在OpenHarmony的开发板上运行Native C++创建的项目了
更多推荐
所有评论(0)