在树莓派4B上使用nativefier打包网页应用

本文分享了在树莓派4B上使用nativefier将本地网页打包成APP的实战经验,包括解决位数识别、OPENGL驱动和JavaScript错误等问题。

近期因项目需要,在树莓派上需要将本地网页打包成APP,便使用nativefier来完成,但是出现了一些小插曲,记录在此。

环境:树莓派4B4G版本,系统为raspibian32位

nativefier可以一键打包网页成一个应用,操作方法也很简单,就是命令行输入:nativefier  [网址]

详情见:https://github.com/jiahaog/nativefier#usage

但是在树莓派上使用出现了三个问题,具体问题及解决办法如下:

问题1:arch无法自动选择位armv7l:

Error during build. Run with --verbose for details. Error: Unsupported arch=arm (string); must be a string matching: ia32, x64, armv7l, arm64, mips64el
    at unsupportedListOption (/usr/local/lib/node_modules/nativefier/node_modules/electron-packager/src/targets.js:64:10)
    at Object.validateListFromOptions (/usr/local/lib/node_modules/nativefier/node_modules/electron-packager/src/targets.js:134:16)
    at packager (/usr/local/lib/node_modules/nativefier/node_modules/electron-packager/src/index.js:167:25)
    at Object.buildNativefierApp (/usr/local/lib/node_modules/nativefier/src/build/buildNativefierApp.ts:118:30)

但是执行uname -a命令可以看到树莓派就是armv7l,但是nativefier会识别为arm,原因不明。

解决方法:添加参数 “-a armv7l"

问题2:打包完成后启动时出现failed to load swrast driver的情况:

MESA-LOADER: failed to retrieve device information
MESA-LOADER: failed to retrieve device information
MESA-LOADER: failed to retrieve device information
MESA-LOADER: failed to open kms_swrast (search paths /usr/lib/arm-linux-gnueabihf/dri:\$${ORIGIN}/dri:/usr/lib/dri)
failed to load driver: kms_swrast
MESA-LOADER: failed to open swrast (search paths /usr/lib/arm-linux-gnueabihf/dri:\$${ORIGIN}/dri:/usr/lib/dri)
failed to load swrast driver

这多半是驱动问题,搜索良久无果,无奈选择关闭OPENGL,见:https://www.zhihu.com/question/268198765

sudo raspi-config ->Advanced Options ->GL Driver 选第二个。
重启
sudo raspi-config ->Advanced Options ->GL Driver 选第一个(Legacy)。
重启

亲测有效。

问题三:弹窗提示JavaScript error

此处不方便截图,但是报错为"Image could not be created"

此问题在nativefier issue中已经解决,地址:https://github.com/jiahaog/nativefier/issues/992

具体解决方法为,在原有命令基础上添加”--verbose -e 8.3.2"来选择electron版本。

目前问题已经解决,如有其他问题请留言一同探讨。

要在树莓派4B上使用C语言控制WS2812灯带,首先需要安装必要的库和支持。以下是一般的步骤: 1. **安装依赖**: - 更新树莓派软件包:`sudo apt-get update && sudo apt-get upgrade` - 安装 WiringPi 库,它包含了与GPIO交互的函数:`sudo apt-get install wiringpi` 2. **设置WS2812灯带接口**: - 确定灯带使用的GPIO针脚,通常WS2812连接到GPIO 18、19、20(也称为“SPI”端口)。 3. **引入头文件**: 在C文件中包含WiringPi的头文件,如 `#include <wiringPi.h>` 和 LED灯条驱动的库,例如 `#include <wiringPiI2C.h>` (如果通过I2C连接) 或 `#include <pigpio.h>` (如果直接使用GPIO). 4. **初始化硬件**: 根据所选接口(SPI或GPIO),调用相应的初始化函数。例如,使用SPI: ```c if (wiringPiSetup() == -1) { // 初始化失败,处理错误 } wiringPiSPISetup(0, 1000000); // SPI时钟频率设置,单位为Hz ``` 5. **控制灯带**: 使用提供的API来发送数据控制灯带的颜色。对于WS2812,你可以使用 `wiringPiWriteReg32()` 函数来设置RGB值,比如: ```c uint32_t pixelData = 0x00FF00; // 设置绿色,红绿蓝格式,高位为红色 wiringPiI2CReg32Write(0x70, 0x00, pixelData); // 发送到I2C地址0x70,寄存器0x00 ``` 6. **循环更新颜色**: 循环遍历灯珠并更改其颜色,可以创建一个定时器或者使用while循环每秒更新一次。 ```c for (int i = 0; i < numPixels; i++) { uint32_t color = calculateColor(i); wiringPiI2CReg32Write(0x70, i*3+1, color); // 控制每个像素 } // 函数calculateColor可以根据索引生成对应颜色 ``` 7. **清理资源**: 在程序结束前记得关闭或释放所占的硬件资源。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值