
Flipper Zero JavaScript SDK 如何用 npm start 运行 JS 应用并实现代码热更新【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware在 Flipper Zero 上调试 JavaScript 应用时如果按传统方式操作每次改完代码都要把.js文件重新拷到设备再运行重复步骤很多。Flipper Zero 固件仓库提供的 JavaScript SDKNPM 包flipperdevices/fz-sdk把「上传 运行」合并成一条npm start命令它会把你的 TypeScript 代码转译成普通 JavaScript拷贝到 Flipper Zero 并直接启动。改完代码后再次执行npm start设备上的旧.js文件就会被新版本替换并重新运行这就是本文要走的完整路径。准备条件官方指南对环境的硬性要求只有两项PC 上安装Node.js npmSDK 以 NPM 包分发npm 需要 Node.js 运行时才能工作指南以 npm 为例SDK 的 README 也说明可以用pnpm或yarn替代Flipper Zero 通过USB 连接到 PC。指南没有指定 Node.js 的具体版本号按 Node.js 官方下载页提供的安装方式操作即可。用向导创建 SDK 项目在希望存放项目的目录下打开终端执行npx flipperdevices/create-fz-applatest该命令启动交互式向导实现见 create-fz-app/index.js依次需要你提供三项内容项目名文本输入默认值my-flip-app包管理器从npm/pnpm/yarn中选择本文选npm确认创建。两个需要留意的行为向导会自动把模板复制到项目目录并用你填的项目名替换模板里的app_name占位符然后在项目目录内自动执行包管理器 install安装依赖含flipperdevices/fz-sdk。向导结束时会输出类似下面的提示文档示例Done! Created my-flip-app. Run cd my-flip-app npm start to run it on your Flipper.副作用说明如果输入的项目名对应的目录已经存在向导会询问是否继续一旦确认继续向导源码会先删除该同名目录index.js 中的fs.rmSync(name, { recursive: true, force: true })再用模板重建。不要对包含已有内容的目录直接确认覆盖。创建完成后项目里会包含应用代码和配置核心是两个文件index.ts应用入口所有 JS 应用逻辑写在这里模板见 template/index.tsfz-sdk.config.json5SDK 的构建与上传配置见下一节。看懂 fz-sdk.config.json5决定产物和上传位置模板中的 fz-sdk.config.json5 内容如下向导已把app_name替换为你的项目名{ build: { // Where to put the compiled file output: dist/app_name.js, // Whether to reduce the final file size at the cost of readability and // clarity of error messages minify: false, // Set this to false if youve thoroughly read the documentation and // are sure that you can use manual version checks to your advantage enforceSdkVersion: true, }, upload: { // Where to grab the file from. If youre not doing any extra processing // after the SDK, this should match build.output input: dist/app_name.js, // Where to put the file on the device output: /ext/apps/Scripts/app_name.js, }, }各字段的作用按模板注释字段作用build.output编译产物位置dist/项目名.jsbuild.minify是否压缩默认falsebuild.enforceSdkVersionSDK 版本强制检查默认true只有确认能自己手动管理版本兼容性时才改为falseupload.input上传时取文件的位置不做额外处理时与build.output一致upload.output文件在设备上的目标路径/ext/apps/Scripts/项目名.js也就是说npm start的完整链路是index.ts→ 转译按需压缩到dist/项目名.js→ 上传到设备的/ext/apps/Scripts/目录 → 启动应用。用 npm start 运行应用按指南的步骤执行将 Flipper Zero 通过 USB 连接到 PC在应用文件夹向导生成的项目目录中打开终端运行npm startnpm start会把 JS 文件拷贝到 Flipper Zero 并运行它。判断运行成功的依据终端会显示应用中print()函数的输出消息指南对npm start输出的说明设备端模板应用会弹出一个对话框显示Hello from 项目名按中间键或返回键应用退出对应 模板 index.ts 中两处eventLoop.stop()的订阅逻辑中心键停止、返回键停止。修改代码后如何实现热更新指南在「Updating your app」一节给出的更新方式是手动重推修改应用代码后再次运行npm start。只要 Flipper Zero 仍处于连接状态更新后的应用就会启动Flipper Zero 上的旧.js文件会被新版本替换。因此每次调试循环就是改index.ts→ 保存 → 在项目目录重新执行npm start。两点边界说明这是「每次改动后重新执行命令」的推送机制项目文档中没有描述文件监听、保存后自动触发的热重载功能不要预期保存即自动更新。更新后的文件落在设备的/ext/apps/Scripts/项目名.js与第一个 JS 应用指南中脚本所在目录SD Card/apps/Scripts/是同一位置所以也可以像该指南那样从设备的Apps → Scripts菜单选择脚本按 OK 运行或通过 CLI 的js /ext/apps/Scripts/项目名.js命令运行。可选配置JS 压缩与代码补全这两项与「运行 热更新」主流程无关按需要开启JS minifier默认关闭把fz-sdk.config.json5中build.minify设为trueSDK 在上传前会压缩 JS去除空格、换行等并缩短变量名。指南建议调试期间保持关闭默认值就是关闭因为压缩后的错误信息更难读。代码补全SDK 提供类型定义在支持 Language Server 的编辑器/IDE例如 VS Code中可获得自动补全减少查文档的次数。编写 SDK 代码时要注意的 TypeScript 差异使用 SDK 时开发语言是TypeScript与基础 Flipper JavaScript 的写法有几点差异指南「Differences with normal Flipper JavaScript」一节导入模块不用let module require(module);而是import * as module from flipperdevices/fz-sdk/module;模板index.ts顶部还有一条顺序约束eventLoop必须在gui之前导入gui必须在任何gui子模块之前导入。多文件限制SDK 目前不支持多个.ts文件互相导入可以用load()但不会享受 TypeScript 类型检查。值转换部分 Flipper JavaScript 函数返回泛型如eventLoop.subscribe()的回调参数是泛型Item使用前可能需要转换行内转换stringitem或声明新类型let text item as string;。产物与分享npm start上传时会把代码转译成普通 JavaScript按需再压缩如果要把脚本分享给别人运行给他们的应该是转译后的 JS 版本。版本兼容说明fz-sdk 包的 README 说明包版本遵循 semver每个包版本的主版本和次版本与其针对的 Flipper Zero JS SDK 版本一致例如用 SDK 版本0.1.0编译的应用兼容 SDK0.1…1.0不含1.0。README 建议在按使用场景选用sdkCompatibilityStatus、isSdkCompatible、assertSdkCompatibility组合来检查 SDK 兼容性。下一步至此一条完整的开发循环已经打通npx flipperdevices/create-fz-applatest创建项目 → 修改index.ts→npm start上传并运行 → 再次npm start完成更新。接下来如果想从 JS 代码访问 Flipper Zero 的更多硬件资源串口、GPIO、USB-HID 等需要引入 JS 模块参见 Using JavaScript modules。【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考