【BQ3568HM开发板】适配LED点灯程序
目录
引言
前一篇博文提到,官方提供的bq_led.hap软件包在安装到BQ3568HM开发板时会遇到“failed to install bundle. code:9568347 error: install parse native so failed.”错误,这是因为hap包里面的库文件是64位的,而默认镜像是32位的,所以导致不兼容。下面就说说如何修改程序进行适配。
示例程序工作原理
该实例程序的源码在百度网盘的“软件资料→开源鸿蒙南北向打通应用开发教学资料”目录中的代码资料中,其中的“2、开源鸿蒙GPIO控制应用开发”就是这个例子的源码。
index.ets代码如下:
import testNapi from 'libentry.so'
@Entry
@Component
struct Index {
@State message: string = '点亮一个LED灯';
@State result: number = 0;
ledPath: string = "/sys/class/leds/pilot_lamp/brightness";
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Text("LED_Gre")
.fontSize(30)
.fontWeight(FontWeight.Bold)
Toggle({type: ToggleType.Switch, isOn: false})
.size({height: 40, width: 100})
.onChange((isOn)=>{
if(isOn){
console.info("this toggle is On.")
let res: string = testNapi.gpio_on(this.ledPath)
console.info(res);
}else {
console.info("this.toggle is Off.")
let res: string = testNapi.gpio_off(this.ledPath)
console.info(res);
}
})
}
.width('100%')
}
.height('100%')
}
}
从中可以看出,它调用了NAPI库,然后在NAPI库中操作“/sys/class/leds/pilot_lamp/brightness”,以实现开关灯的操作。
适配修改
适配的修改也比较简单,就是让工程同时编译出64位和32位的库,这样HAP包就可以在不同的配置下运行了。
修改entry\build-profile.json5文件,在其中加入AbiFilters属性。代码如下:
"apiType": "stageMode",
"buildOption": {
"arkOptions": {
// "apPath": "./modules.ap" /* Profile used for profile-guided optimization (PGO), a compiler optimization technique to improve app runtime performance. */
},
"externalNativeOptions": {
"path": "./src/main/cpp/CMakeLists.txt",
"arguments": "",
"cppFlags": "",
"abiFilters": ["arm64-v8a", "armeabi-v7a"]
}
再次编译程序就可以了。
测试
再次部署程序到开发板,运行效果如下图所示。提供控制屏幕上的开关按钮,在电源灯下面有个绿灯会开关(图中画圆的部分)。
结语
至此,完成了程序的适配工作。
原文地址:https://blog.csdn.net/bit_mike/article/details/145287860
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!