从Android开发转向鸿蒙OS后,我开始尝试鸿蒙原生NDK开发,使用DevEco Studio(V5.05)创建默认项目。然而,生成的HAP包在鸿蒙模拟器中无法运行,提示错误代码9568347。查阅官方文档得知,问题可能源于设备支持的ABI类型与C++工程配置的ABI不一致。作为新手,我查阅了多种解决方案,经过反复调试和配置调整,最终成功解决了该问题,使应用能够在模拟器上正常启动并运行,为后续深入学习鸿蒙原生开发打下基础。
1、 通过仔细观察发现,该问题并非编译阶段的错误,而是在编译打包并部署HAP包至手机或模拟器时才出现,可依据运行时报错时右下角弹出的提示信息进行判断。
2、 由于缺乏真实设备进行测试,只能借助模拟器完成相关工作。而模拟器基于x86架构,与真实设备采用的arm64架构不同。推测问题根源在于,编译生成的C++原生代码.so文件为arm64版本,无法在x86架构的模拟器上正常运行。为解决该问题,需调整编译配置,生成适配x86平台的动态库文件,从而确保程序在模拟器中顺利执行。
3、 修改工程目录中的build-profile.json5文件,于buildOption配置项下新增所需内容。
4、 所示,通过CMake编译生成适用于x86架构的目标文件。
5、 修改保存后重新编译并安装,模拟器成功运行HAP包并显示正确画面,编译输出中也生成了x86_64架构的目标文件,问题已解决。
评论
更多评论