在蓝区开发的时候,在rk3568上运行demo,遇见如下报错:
这个问题是由于设备支持的Abi类型与C++工程中配置的Abi类型不匹配导致,请通过如下步骤进行解决。
- 将设备与DevEco Studio进行连接。打开命令行工具,进入hdc shell。
- 执行如下命令,查询设备支持的Abi列表,返回结果为default/armeabi-v7a/armeabi/arm64-v8a/x86/x86_64中的一个或多个Abi类型。
shellparam get const.product.cpu.abilist
- 根据查询返回结果,检查模块下build-profile.json5文件中的“abiFilters”参数中的配置,规则如下:
1)若返回结果为default,请执行如下命令,查询是否存在lib64文件夹。
2)存在lib64文件夹:则“abiFilters”参数中需要包含arm64-v8a类型。
3)不存在lib64文件夹:则abiFilters”参数中需要至少包含armeabi\armeabi-v7a中的一个类
若返回结果为armeabi-v7a/armeabi/arm64-v8a/x86/x86_64中的一个或多个,需要在“abiFilters”参数中至少包含返回结果中的一个Abi类型。 那么,进入工程下的build-profile.json5去添加
发现飘红,这是因为armeabi-v7a是OpenHarmony特有的,所以要修改runtimeOS。 所以去模块下的build-profile.json的去修改。如下图。
修改完,点击右上角的sync,飘红即可解决。
注意!!!!!!!!!!
如果这样子还不能解决,就说明是你sdk下没有openharmony的sdk,那么就需要手动安装一下。
进入左上角的file->setting,去手动下载sdk。
同时查看一下文件下面是不是显式指定了openharmony工程的sdk路径。文件如下。
最后重启ide,即可。
注意!!!
如果你需要替换sdk的部分文件,不能只简单的进行拷贝,还需要修改config文件。
替换sdk编译产物
Z:\OpenHarmony0319\out\sdk\ohos-sdk\windows中的ets js previewer toolchains文件
Z:\OpenHarmony0319\out\sdk\sdk-native\os-irrelevant\sysroot\usr中的include lib文件
去替换
C:\Users\XXXXX\AppData\Local\OpenHarmony\Sdk\10
记得改变每个文件里面的版本号(eg:10)
如图,我想用本地编译的sdk的native去替换ide自带的sdk的native,那么就需要确认native目录下的oh-uni-package和其他同级目录下(如js)里面的参数保持一致。
native文件夹下的oh-uni-package.json
要替换旧文件中的这些版本信息,不可改动,会导致无法识别。
以下全部文件ets js previewer toolchains previewer 文件中每一个都会有相对应的文件版本信息。只要有替换都需要改为旧版本信息!
其他注意也要修改的地方哦!
devEco上下载版本
File->setting->OpenHarmony->文件存储路径->下载API(10)
进程
sdk位置
C:/Users/XXXXX/AppData/Local/OpenHarmony/Sdk
文件查看
DevEco上local.properties查看文件位置
修改文件
oh_modules文件中为 “runtimesOS”:“OpenHarmony”,
build-profile.tsjson5文件中
签名
方案一:
方案二:
查看sdk文件路径
去替换
C:\Users\XXX\AppData\Local\OpenHarmony\Sdk\10
记得改变每个文件里面的版本号(eg:10)