各位大佬: 请教一个问题,当前情况如下: 一、操作步骤 1、自己成功编译迁移了libusb.so,到OpenHarmony下 2、基于libusb库,编写了一个纯C/C++的可执行文件,调用libusb访问一个外接的USB小模块。 注:使用的CMakelist编译Execuable。然后把可执行文件和libusb.so,通过hdc(类adb)送到OH系统上 3、编译完的两个库,发送后,赋予可执行文件777权限,然后执行,hdc指令参考: hdc file send XxxTest /data/local/XxxTest hdc file send libusb1.0.so /data/local/libusb.so hdc shell "chmod 777 /data/local/*" hdc shell cd /data/local/ ./XxxTest 4、通过以上操作,在OpenHarmony3.1/4.0上,可以正常通过C/C++编写的可执行文件,调用libusb.so,可以正常调用到外接的USB小模块,并正常驱动起来。 二、原生APP通过NAPI调用libusb访问硬件设备问题 基于以上访问验证通了以后,我需要编写一个原生APP(OH的HAP)去调用这个libusb访问设备。 1、使用DevEco Studio,编写了一个DEMO,选择Native C++,然后就是基于NAPI的代码。 2、加载起libusb,配置好CMakelist。以及把前面编写的C/C++可执行程序代码,移到NAPI里,对外导出对应接口 3、在ArkTs层,通过NAPI导出的接口,调用到libusb去访问设备 结果:访问不到,报错,libusb初始化就失败了,libusb找不到USB设备列表。 4、尝试各种方法:给与APP各种访问权限、ArkTs申请文件访问权限、ArkTS申请USB权限、把libusb放到/system/lib并给644/777权限等 都没用,通过NAPI记录的日志显示,调用libusb的init失败,other_error。实际就是libusb遍历usb设备节点都没找到 这样做的原因:需要跨平台Linux/Android,保持同一套代码。 1、请教各位大佬:以上问题,有哪位清楚,有什么方案解决? 2、官方第三方库迁移列表里,有libusb,说是迁移成功。如果迁移的libusb都没法通过HAP原生APP调用,无法访问到USB设备,那官方迁移libusb的意义是? 官方迁移第三方库的地址:[color=var(--hl_color) !important]https://gitee.com/openharmony-sig/tpc_c_cplusplus |
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) | Powered by Discuz! X3.5 |