Lokasi ngalangkungan proxy:   [ UP ]  
[Ngawartoskeun bug]   [Panyetelan cookie]                
Skip to content

jjm2473/rktool-webusb

Repository files navigation

rkdeveloptool port to wasm/webusb

rkdeveloptool 编译为 WebAssembly,并通过适配层在浏览器(WebUSB)与 Node.js 中复用同一套 CLI 调用方式。

已支持固件格式:

  1. raw 磁盘镜像 (.img)
  2. 压缩 raw 磁盘镜像,包括 iStoreOS,OpenWRT,Armbian 等(.img.gz, .img.xz)
  3. RKFW 固件,一般安卓固件是这种格式 (.img)

除了 raw 磁盘镜像,其他都是在前端靠 VFS 实现,非 rkdeveloptool 原有功能。

环境要求

  • Emscripten 3.1.48+
  • CMake 3.16+
  • Node.js 18+

准备

  1. 下载并解压 libusb-1.0.29 到 ref,打上 patches/libusb 补丁
  2. 拉取 rkdeveloptool ,打上 patches/rkdeveloptool 补丁

构建 WASM

./build_wasm.sh

或使用 npm 脚本:

npm run build:wasm:dev
npm run build:wasm:debug
npm run build:wasm:relwithdebinfo
npm run build:wasm:release

构建完成后会在 dist/ 生成:

  • rkdeveloptool.js
  • rkdeveloptool.wasm

默认构建会关闭 JS 混淆(RK_WASM_JS_MINIFY=0,内部使用 --minify 0),便于排查问题。

如需可调试构建(保留符号并生成 source map),可使用:

npm run build:wasm:debug

等效环境变量:RK_WASM_BUILD_TYPE=Debug RK_WASM_DEBUG_INFO=1 RK_WASM_JS_MINIFY=0

如需发布体积优化版本,可开启 JS 混淆:

RK_WASM_JS_MINIFY=1 ./build_wasm.sh

Node.js 使用

npm install
node examples/nodejs/cli.js ld

如需在 Node.js 中通过 wrapper 传文件参数,推荐先用本地路径构造 NodeBlobimport { NodeBlob } from './src/node/node-blob.js'),再传给 mountFile()runCommand(..., { fileSource })

浏览器使用

浏览器环境需要 HTTPS 或 localhost。可在仓库根目录启动一个静态服务:

python3 -m http.server 8080

然后访问:

  • http://localhost:8080/examples/browser/index.html

页面内可:

  • 通过 file input 选择固件文件
  • 选择 Rockchip 设备(navigator.usb.requestDevice
  • 执行 lddbwl 等命令

web

测试

npm run test:unit
npm run test:build

文档

  • 迁移说明:docs/porting-notes.md
  • API 文档:docs/api.md

References

About

rkdeveloptool porting to wasm/webusb

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors