首页 > 评测 > Android Things之十(最终章)——部署Android Things产品

Android Things之十(最终章)——部署Android Things产品

Android Things    i.MX7D    RPI3    SDK   
  • 作者:SATURN
  • 来源:21ic
  • [导读]
  • 本文将为大家介绍如何使用Google帐号登入Console,建立自己的产品配置。

 Android Things生态包括三个部分:硬件平台、SDK及Console。

欢迎加入Android Things交流群:452863046

前面我们接触了两个典型的硬件平台:i.MX7D及RPI3,在 Android Things的大一统之下,使用SDK来开发软件,在代码上并无差别,因为硬件细节都被隐藏在OS之下了!

当准备开始构建原型和设备时, Android Things Console提供了在支持的硬件设备上安装和更新系统映像的工具。允许开发者将更新推送到现场用户以及在自己的硬件上测试部署。使用控制台,可以完成下列任务:

• 下载并安装最新的 Android Things系统映像

• 构建包含OEM应用程序的工厂映像以及系统映像

• 将无线(OTA)更新(包括OEM应用程序和系统映像)推送到设备

简单的说,就是Console是用来管理系统映像的工具,包括创建、定制及更新系统映像。

rId21.png

使用Google帐号登入Console,建立自己的产品配置,例如这里添加了两个,一个是i.MX7D,另一个是RPI3。

rId22.png

因为OS是由Google提供的,咱们只能选择既有的产品,当前最新的版本号为1.0.2。系统映像默认添加Google Play Service,可以使用其提供的API功能。

Console还提供了系统分区的定制功能,例如分区大小,各分区的名称及信息等。

可以在定制系统映像的时候添加APP,这样一旦将系统映像写入到产品中,就可以实现开机即用!

rId23.png

不过这里要注意的是, Android Things只允许上传一个HomeActivity程序,该程序会在系统启动时自动启动。如果指定了多个HomeActivity程序,Console不会生成系统映像。

生成的系统映像可以指定两个版本:产品版及开发版。如果是在产品开发过程中,一般使用开发版,如果测试好了之后,就可以生成产品版的系统映像,直接用于产品部署。

前面我们在测试各种外设功能的时候,生成的Android Studio工程文件都使用的是默认设置,在正式开发产品时,根据实际情况需要,还要修改工程的配置。例如需要指定自动启动程序的Catogery属性。

以上一节中的交互式GUI为例,AndroidManifest文件应该修改如下

 <?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.demo.lcddemo">
    <uses-permission android:name="com.google.android.things.permission.USE_PERIPHERAL_IO" />
    <application>
        <uses-library android:name="com.google.android.things" />
 
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
</manifest>

实际上要修改的只有包括<category android:name="android.intent.category.HOME" />的这一行,有了这一行,该程序在系统启动时自动启动。

事实上,一般支持 Android Things的硬件相对来说是比较高端的硬件产品,只允许运行一个HomeActivity程序是不是浪费了硬件资源?这个问题应该从两个方面来理解:一是传统的MCU产品,基本都只能部署一个程序,而且许多 Android Things硬件甚至也没有提供GUI支持,所以这样做实际上是简化了产品部署的步骤;其次,如果确实需要更好的利用硬件资源,可以在程序里添加不同的功能模块,在主Activity里做统一任务调度,保证各模块功能的协调工作。

最后补充下  Android Things的Driver库,这是 Android Things中SDK的有益补充。SDK中提供的GPIO、I2C及SPI等库都是低级的基本操作,与具体的硬件设备无关。例如市面常见的OLED(SSD1306)模块,一般使用I2C或SPI接口来进行通信,通信过程使用的具体指令通过I2C或SPI接口发送给模块硬件,完成相应的显示功能。Drivers库就是基于SDK开发的更高层的API接口,直接面向具体的硬件模块。目前这个库还在完善当中,目前主要有SSD1306, lowpan等设备的支持。

这些三方的Drivers的Github地址为:https://github.com/androidthings/contrib-drivers,欢迎大家贡献自己的开源力量!

  • 本文系21ic原创,未经许可禁止转载!

网友评论