内容来源:2017 年 11 月 19 日,谷歌开发者专家王玉成在“2017谷歌开发者节北京站”进行《Android Things系统结构及展望》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方、演讲者审阅授权发布。
阅读字数:3266 | 9分钟阅读
摘要
Android Things的功能,整体框架,以及软件开发调试环境介绍。Google IoT Core介绍,以及现有的基于Android Things的项目概览。
嘉宾演讲视频及PPT回顾:http://suo.im/4s6Gko
Android Things
Android的整个生态涉及到手机、手表、电视、汽车以及物联网。Android Things的系统相对其他几部分更加精简,适合与物体结合的场景,也就是物联网方面。它的应用领域偏向于Camers、Gateways、HVAC Control、Smart Meters。
在物联网设备中安全性的是比较难解决的,例如手环、Camers这类安全性相对较高的设备一旦被拿到最高权限,大量私密信息就会被暴露出去。考虑到这方面的问题Android Things在系统设计之初就在安全性上做了完善的配置。
Android Things开发工具
Android SDk是完全支持Android Things的,当然也能够使用Android Studio作为开发工具。Play Services是google Services的一个组件,Firebase则是数据库,Cloud platform集成了对物联网的数据应用。可以看到Android Things借鉴了很多Android的工具,毕竟它是类似安卓的一套系统。
物联网最基本的形态中类似于传感器、摄像头这样的设备会对数据进行收集,然后进行粗加工传送到云端,最终处理分析这些数据。整个流程中数据会被存放到数据库,但是收集到数据后进行深加工的这一环节,对目前的嵌入式设备来说还有很多问题没有解决。因此数据的深加工都被放在云端解决,这也使得Firebase和Cloud platform在整个数据处理的过程中占有比较重要的地位。
IoT
出于安全方面的考虑,Android Things的操作系统核心都是由谷歌直接管理,将开发者的权限限制在小范围内。Google提供了IoT Developer Console进行云应用上传以及对设备的下发。
Automatic Security Update是自动安全升级,它在Developer Console中进行推送,一旦有新的Android Things镜像或者需要从Android Things镜像中升级应用都是通过Google服务器自动获得推送升级。Signed Images和Verifled Boot涉及到了嵌入式开发的领域。
一般的简单嵌入式开发引导流程都是先从Bootloader到Linux Kernel,再进入到,之后才是其他应用的启动过程。从整个系统的安全性来看,是可以在Bootloader这部分夹杂一些代码去获得权限的。于是Google 要求Signed Images和Verifled Boot这两部分需要OEM厂商和自己进行认证,来保证这部分二进制镜像的可靠性。
产品的开发中,需要在CPU芯片的模块板上画开发板,进行硬件方面的初期设计。完成后就进入到应用的开发时期,来让开发者进行开发。
Android Things for Developers
上图是整个Android 的整个系统的框架,包括linux kernel、Libraries、Application Framework、Application。Application中大多是手机或者平板的应用和框架。
Application Framework这层中灰掉的这部分是Android Things去掉的部分框架,这些框架都涉及到了用户交互方面的应用,而Android Things并不赞赏通过屏幕去进行用户交互。因为物联网的设备只需要配置好最初的设备环境就可以了,系统的运行过程中主要是进行数据收集以及传递的工作。虽然Android Things并不会过多的涉及用户交互,但还是提供了一些交互渠道,比如音频、keyboard、按键。
Different from Android
不同于Android的多应用多Activity,Android Things中去除用户的交互之外,就只使用了一个应用并且只包含一个Activity。Android有着动态权限的获取,而Android Things的唯一一个应用是伴随系统启动的,不需要用户去动态获取权限。由于Android Things需要驱动众多的外设,所以它还有一个支持这些外设的库。安卓的开发中Android Studio提供了虚拟机的支持,但Android Things可是涉及到了众多的硬件,因此在软件层面上的虚拟机支持是不必要的。
Support Google Service
上图列出的是Android Things的API支持情况,主要集中在数据、地图、定位这类的服务。在数据相关的服务中关于用户交互的部分也被去除了。Android Things的Cloud部分会生成各种服务API的key,然后在应用中加入key。这样就解决了用户态的认证缺失的情况下,依然能判断当前设备是否为Android Things设备的问题。
用户态驱动
Android Things提供了几大类的IO,外设的IO包括GPIO,PWM、I2C、SPI、UART、Native PIO。GPIO 可以用于传感器的控制,PWM 用于对电机或声音的控制。I2C、SPI、UART这三部分涵盖了低中高三种总线,在目前所有的传感器模块中,如果需要连接板子都是要用到这三种总线的。
在用户态这方面则抽象出了类似Android的输入、传感器、GPS、Audio的部分。还覆盖了Peripheral I/O的一些设备,这部分的抽象被放在了Android Things Libraries中,通过接口就可以调用。
Simple Peripheral I/O
上图是GPIO的一个简单例子,主要涉及到方向、触发方式以及回调函数的注册。
Cloud IoT Core Beta
Android Things收集数据进行深处理必须要经过Google Cloud,上图就是Cloud IoT Core的整个架构。设备将数据导入到Cloud IoT Core后再利用Functions配置数据,接着Pub/Sub进行交互,交互完成后利用Bigtable、BigQuery、ML进行数据的处理,处理完成后将数据交给Datalab以及Date Studio,最后完成一些其他的处理。
Work Flow
上图展示了用户在Cloud IoT Core上的工作方式。整个流程中有着三个主要角色,第一个角色是设备数据采集的过程,在物联网中数据是低频的传输,基于TCP协议之上,它主要通过MQTT/HTTP协议将数据传输到Cloud IoT Core。另一个角色是Provisioner,当产品开发完成后会交给Device Manager进行管理。Cloud IoT Core采集到的原始数据会被传输到Pub/Sub模块,也就是最后一个角色。
Android Things 社区链接
Google’s IoT Developers Community:https://g.co/IoTdev
Google’s IoT Solutions:https://Iot.google.com
Android Things SDK:
https://developer.android.google.cn/things/index.html
有问题可以在评论区讨论,以上为所有分享内容,谢谢大家!