打包加密架构
使用环境
- 支持quickjs引擎固件
- 不支持duktape引擎固件
使用方式
基于命令行工具来进行加密。
命令行API
pack - 打包应用
命令参数
amp pack <app-dir> -m <mode> -e <encode>
说明
将应用打包成app.bin。
- mode:模式,可选项 [quickjs | duktape],默认duktape
- encode:编译,可选项 [0 | 1],默认0不编译,duktape不支持编译
该命令执行后,生成的app.bin文件存放于执行目录。
命令示例
$ amp pack ./app /dev/tty.usb* -m quickjs -e 1
put - 在线热更新
命令参数
amp put <app-dir> <device-name> -m <mode> -e <encode>
说明
远程推送轻应用到设备。
- mode:模式,可选项 [quickjs | duktape],默认duktape
- encode:编译,可选项 [0 | 1],默认0不编译
命令示例
$ amp put ./app 8675*******3456 /dev/tty.usb* -m quickjs -e 1
serialput - 本地热更新
命令参数
amp serialput <app-dir> <port> -m <mode> -e <encode> -b <baudrate>
说明
通过串口推送轻应用到设备(本地更新)。
- mode:模式,可选项 [quickjs | duktape],默认duktape
- encode:编译,可选项 [0 | 1],默认0不编译
- baudrate:波特率,默认115200
命令示例
$ amp serialput ./app /dev/tty.usb* -m quickjs -e 1
实际效果
原始代码
// 以控制led灯代码为例 // app.js import * as gpio from 'gpio'; let led3 = gpio.open({ id: 'LED3', success: function() { console.log('gpio: open led success') }, fail: function() { console.log('gpio: open led failed') } }); let val = 0; // 设置gpio亮灭,间隔一秒 setInterval(function() { val = 1 - val; led3.writeValue(val); console.log('led set value :', val); }, 1000); // app.json { "version": "1.0.0", "io": { "LED3": { "type": "GPIO", "port": 36, "dir": "output", "pull": "pulldown" } }, "debugLevel": "DEBUG" }
未加密代码
// app.bin � �� u6���+"��app.json{ "version": "1.0.0", "io": { "LED3": { "type": "GPIO", "port": 36, "dir": "output", "pull": "pulldown" } }, "debugLevel": "DEBUG" }�Y�Q���-�Б%Aapp.jsimport * as gpio from 'gpio'; // app.js var led3 = gpio.open({ id: 'LED3', success: function success() { console.log('gpio: open led success'); }, fail: function fail() { console.log('gpio: open led failed'); } }); var val = 0; // 设置gpio亮灭,间隔一秒 setInterval(function () { val = 1 - val; led3.writeValue(val); console.log('led set value :', val); }, 1000);