我在我的 aws IoT 项目中有一个要求,我需要更新 aws IoT 连接设备的应用程序代码或其中的一部分,比方说,应用程序版本或应用程序计划更新等。
我应该如何实现这一目标?到目前为止,我发现云前端或代码部署很有用,但没有直接用于此类目的。还有其他服务可以帮助我实现 aws 中可用的所需解决方案吗?
谢谢。
最佳答案
所有设备固件升级
一个合理的模式是使用 Device Shadow在 AWS IoT 中以报告状态存储您设备的当前固件信息。
{
"reported": {
"firmware": {
"version": "1.0.0",
"name": "linux-3.8.0-armeabi"
}
}
}
当您想要在您的设备上触发固件升级时,您可以在所需状态中引用新版本和指向它的指针(例如指向 S3 存储桶)。
{
"reported": {
"firmware": {
"version": "1.0.0",
"name": "linux-3.8.0-armeabi"
}
},
"desired": {
"firmware": {
"version": "1.1.0",
"name": "linux-4.0.0-armeabi",
"url": "https://s3-<region>.amazonaws.com/<bucket>/<file>"
}
}
}
当这个变化发生时,设备会收到一个delta事件,表明它的影子文档发生了变化,一旦他注意到有新的固件条目,就会开始下载新固件在所需状态中描述。
Note: One advantage of this method is that it will work even if the devices are offline, when they'll get back online, they will sync with the shadow.
选择性固件升级
有时,制造商希望控制固件在其设备群上的部署方式,例如,他们可能希望:
- 为世界不同地区部署不同的固件。
- 为硬件略有不同的设备部署不同的固件。
- 为他们出售给不同制造商 (B2B2C) 的设备部署不同的固件。
- 在不同地区逐步部署固件,而不是同时部署。
如果您想细化部署,要考虑到这些限制,可以使用上述方法结合使用 Things Attributes在设备注册表中,这样当您要更新所需状态时,您只需选择与预定义属性匹配的设备即可。
关于android - 通过 aws 服务更新 android 设备(或事物)应用程序代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44767178/