Javascript轻应用命令行工具

简介: 这里主要介绍轻应用的命令行工具,即用于轻应用的辅助开发,以简单的命令行方式运行在Mac或Windows电脑上的工具。命令行工具主要是用来推送设备应用脚本到设备端,并拥有一套完整的命令,可以完成设备的应用热更新、运维服务、日志服务等。

1、前言

这里主要介绍轻应用的命令行工具,即用于轻应用的辅助开发,以简单的命令行方式运行在Mac或Windows电脑上的工具。命令行工具主要是用来推送设备应用脚本到设备端,并拥有一套完整的命令,可以完成设备的应用热更新、运维服务、日志服务等。

 

2、工具包

获取

介绍

命令行工具文件目录如下:

  1. ├── amp # 命令行工具
  2. ├── app # 应用脚本
  3. │   ├── app.json
  4. │   └── app.js
  5. └── bindings.node # 本地更新库

打开

app.js
,这里就运行了我们的业务应用代码,默认打印系统信息。

 

3、准备工作

如果想了解工具中的本地热更新命令,需要通过MicroUSB数据线连接开发板与PC,具体请参考以下链接中的设备连接介绍。

 

4、命令行

4.1、命令名称

$ amp

IoT轻应用

命令行工具
可以对设备进行热更新操作,支持 功能。

Mac版需要设置执行权限:

chmod +x ./amp

Mac上执行amp命令时会遇到权限问题,详见第6部分。

4.2、命令总览

功能

命令

描述

示例

在线热更新

login

命令行登录

amp login <your-token>

device list

列出绑定的设备

amp device list

put

推送应用代码到设备端

在线热更新)

amp put <app-dir> [device-name]

本地热更新

seriallist

列出电脑的所有串口

amp seriallist

serialput

推送应用代码到设备端

本地热更新)

amp serialput <app-dir> <port> -t <type>

-

version

版本号

amp --version

-

help

帮助

amp --help

 

4.3、命令详解

login - 登录

参数

amp login <your-token>

说明

使用在线热更新前,需要获取

<your-token>
,该命令用于登录和绑定用户的唯一token,仅需执行一次。

使用本地热更新时,无需绑定用户token。

token及其SDK包请通过公测申请获取。

示例

  1. $ amp login b8805cfefe8b****f069e638a0162d0e
  2. login success

device list - 列出已绑定设备

参数

amp device list

说明

amp login <your-token>
成功后,使用该命令可列出您账号下已绑定的设备名称,建议使用IMEI号作为设备名称
<device-name>

示例

  1. $ amp device list
  2. Your bound devices:
  3. 8675*******3456
  4. 8675*******4321
  5. 3522*******7456

put - 在线热更新

参数

amp put <app-dir> <device-name>
  • <app-dir>
    指当前目录下app目录,包含板级配置文件和JS脚本文件。
  • device_name
    指绑定列表中的设备名称

说明

注意:使用前,请参考

在线热更新
确定模组固件版本、设备绑定及设备联网等是否已完成。

通过该命令可远程推送轻应用到指定的设备,其中

app-dir
<device-name>
以实际为准。

该命令会消耗网络流量,推送应用到蜂窝模组时请按需使用。

示例

  1. $ amp device list
  2. Your bound devices:
  3. 8675*******3456
  4. $ ./amp put ./app 8675*******3456
  5. device:8675*******3456 ONLINE.
  6. generate app package
  7. push app package SUCCESS

若出现OFFLINE,可能由于设备尚未联网成功

具体示例演示请参考在线热更新

 

seriallist - 列出电脑串口

参数

amp seriallist

说明

注意:使用前,请参考

本地热更新
确定硬件连接

列出电脑上的所有串口,确定

本地热更新
的串口号
<serial-port>

示例

  • Mac
  1. $ amp seriallist
  2. /dev/tty.usbserial-AK08LNMO
  3. /dev/tty.usbserial-AK08LNMM
  • Windows
  1. $ amp seriallist
  2. COM59
  3. COM60

serialput - 本地热更新

参数

amp serialput <app-dir> <serial-port>

amp serialput <app-dir> <serial-port> -t <type>

type:

  • ymodem(默认)

说明

注意:使用前,请参考

本地热更新
确定硬件连接、模组固件和是否进入下载模式

通过串口推送轻应用到设备(本地更新)。

示例

  1. $ amp seriallist
  2. COM59
  3. // usb口以实际情况为准
  4. $ amp serialput ./app COM59 -t ymodem
  5. device type: ymodem
  6. generate app package
  7. put complete!

具体示例演示请参考本地热更新

version - 查看版本号

  1. // 版本号以实际为准
  2. $ ./amp --version
  3. 1.0.3

help - 帮助

  1. $ ./amp --help
  2. Usage: amp [options]
  3. AliOS Things Mini Program PC CLI tool
  4. Options:
  5. -V, --version output the version number
  6. -h, --help output usage information
  7. Commands:
  8. login <token> login
  9. device list list bind devices
  10. put <filepath> <deviceName> upload file to device
  11. seriallist list serial port
  12. serialput [options] <filepath> <port> put file to device via serial port

关于轻应用的文档请参考:https://help.aliyun.com/document_detail/174810.html

5、FAQ

Q1:Mac电脑上的权限问题

 A:在运行amp命令时,Mac系统可能会出现应用信任问题,在运行命令时可能会报出如下错误。

image.png

点击取消,然后进入系统偏好设置,打开安全性隐私,选择仍然允许,如下图所示:

image.png

再次运行amp命令,出现如下提示,点击打开即可完成对amp的信任。

image.png

此时,系统又会弹出bindings.node无法验证的对话框,跟amp同样的问题,再次验证即可

image.png

点击取消,然后进入系统偏好设置,打开安全性隐私,选择仍然允许,如下图所示

image.png

此时命令行工具可能会报如下错误,不用理会。

  1. Error: dlopen(/Users/ljh/Downloads/amp-macos/bindings.node, 1): no suitable image found. Did find:
  2. /Users/ljh/Downloads/amp-macos/bindings.node: code signature in (/Users/ljh/Downloads/amp-macos/bindings.node) not valid for use in process using Library Validation: library load disallowed by system policy
  3. at Object.Module._extensions..node (internal/modules/cjs/loader.js:805:18)
  4. at Module.load (internal/modules/cjs/loader.js:651:32)
  5. at tryModuleLoad (internal/modules/cjs/loader.js:591:12)
  6. at Function.Module._load (internal/modules/cjs/loader.js:583:3)
  7. at Module.require (internal/modules/cjs/loader.js:690:17)
  8. at Module.require (pkg/prelude/bootstrap.js:1225:31)
  9. at require (internal/modules/cjs/helpers.js:25:18)
  10. at bindings (/snapshot/amp-cli/node_modules/bindings/bindings.js:112:48)
  11. at Object. <anonymous> (/snapshot/amp-cli/node_modules/@serialport/bindings/lib/darwin.js:2:36)
  12. at Module._compile (pkg/prelude/bootstrap.js:1320:22)

再次运行amp命令,出现如下提示,点击打开即可完成对bindings.node的信任。

image.png

 

6、开发者技术支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号

更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/

相关文章
|
6月前
|
JavaScript 前端开发
如何减少Node.js应用中的全局变量?
如何减少Node.js应用中的全局变量?
410 133
|
6月前
|
监控 负载均衡 JavaScript
有哪些有效的方法可以优化Node.js应用的性能?
有哪些有效的方法可以优化Node.js应用的性能?
357 69
|
3月前
|
存储 监控 JavaScript
基于布隆过滤器的 Node.js 算法在局域网电脑桌面监控设备快速校验中的应用研究
本文探讨了布隆过滤器在局域网电脑桌面监控中的应用,分析其高效空间利用率、快速查询性能及动态扩容优势,并设计了基于MAC地址的校验模型,提供Node.js实现代码,适用于设备准入控制与重复数据过滤场景。
188 0
|
2月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
231 3
|
3月前
|
资源调度 负载均衡 JavaScript
使用PM2工具部署Vue.js应用于服务器
以上步骤完成之后,你就成功利⽤ PM⼆工具将 Vuejs 应⽰程序部署至服 务 器,并且配合反向代理实现了高效稳定访问及负载均衡功能。
180 0
|
7月前
|
前端开发 搜索推荐 JavaScript
如何通过DIY.JS快速构建出一个DIY手机壳、T恤的应用?
DIY.JS 是一款基于原生 Canvas 的业务级图形库,专注于商品定制的图形交互功能,帮助开发者轻松实现个性化设计。适用于 T 恤、手机壳等多种商品场景。它自带丰富功能,无需从零构建,快速集成到项目中。通过创建舞台、添加模型、定义 DIY 区域和添加素材四个步骤即可完成基础用法。支持在线演示体验,文档详细,易上手。
318 57
|
6月前
|
监控 算法 JavaScript
公司局域网管理视域下 Node.js 图算法的深度应用研究:拓扑结构建模与流量优化策略探析
本文探讨了图论算法在公司局域网管理中的应用,针对设备互联复杂、流量调度低效及安全监控困难等问题,提出基于图论的解决方案。通过节点与边建模局域网拓扑结构,利用DFS/BFS实现设备快速发现,Dijkstra算法优化流量路径,社区检测算法识别安全风险。结合WorkWin软件实例,展示了算法在设备管理、流量调度与安全监控中的价值,为智能化局域网管理提供了理论与实践指导。
181 3
|
7月前
|
存储 JavaScript 前端开发
|
8月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~