Android Things系统结构及展望


内容来源:2017 年 11 月 19 日,谷歌开发者专家王玉成在“2017谷歌开发者节北京站”进行《Android Things系统结构及展望》演讲分享。IT 大咖说(微信id:itdakashuo)做为独家视频合做方,经主办方、演讲者审阅受权发布。
html

阅读字数:3266 | 9分钟阅读linux

嘉宾演讲视频及PPT回顾:suo.im/4s6Gko
android

摘要

Android Things的功能,总体框架,以及软件开发调试环境介绍。Google IoT Core介绍,以及现有的基于Android Things的项目概览。数据库

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