首頁 > 評測 > Android Things之十(最終章)——部署Android Things產(chǎn)品

Android Things之十(最終章)——部署Android Things產(chǎn)品

Android Things    i.MX7D    RPI3    SDK   
  • 作者:SATURN
  • 來源:21ic
  • [導(dǎo)讀]
  • 本文將為大家介紹如何使用Google帳號登入Console,建立自己的產(chǎn)品配置。

 Android Things生態(tài)包括三個部分:硬件平臺、SDK及Console。

歡迎加入Android Things交流群:452863046

前面我們接觸了兩個典型的硬件平臺:i.MX7D及RPI3,在 Android Things的大一統(tǒng)之下,使用SDK來開發(fā)軟件,在代碼上并無差別,因為硬件細節(jié)都被隱藏在OS之下了!

當準備開始構(gòu)建原型和設(shè)備時, Android Things Console提供了在支持的硬件設(shè)備上安裝和更新系統(tǒng)映像的工具。允許開發(fā)者將更新推送到現(xiàn)場用戶以及在自己的硬件上測試部署。使用控制臺,可以完成下列任務(wù):

• 下載并安裝最新的 Android Things系統(tǒng)映像

• 構(gòu)建包含OEM應(yīng)用程序的工廠映像以及系統(tǒng)映像

• 將無線(OTA)更新(包括OEM應(yīng)用程序和系統(tǒng)映像)推送到設(shè)備

簡單的說,就是Console是用來管理系統(tǒng)映像的工具,包括創(chuàng)建、定制及更新系統(tǒng)映像。

rId21.png

使用Google帳號登入Console,建立自己的產(chǎn)品配置,例如這里添加了兩個,一個是i.MX7D,另一個是RPI3。

rId22.png

因為OS是由Google提供的,咱們只能選擇既有的產(chǎn)品,當前最新的版本號為1.0.2。系統(tǒng)映像默認添加Google Play Service,可以使用其提供的API功能。

Console還提供了系統(tǒng)分區(qū)的定制功能,例如分區(qū)大小,各分區(qū)的名稱及信息等。

可以在定制系統(tǒng)映像的時候添加APP,這樣一旦將系統(tǒng)映像寫入到產(chǎn)品中,就可以實現(xiàn)開機即用!

rId23.png

不過這里要注意的是, Android Things只允許上傳一個HomeActivity程序,該程序會在系統(tǒng)啟動時自動啟動。如果指定了多個HomeActivity程序,Console不會生成系統(tǒng)映像。

生成的系統(tǒng)映像可以指定兩個版本:產(chǎn)品版及開發(fā)版。如果是在產(chǎn)品開發(fā)過程中,一般使用開發(fā)版,如果測試好了之后,就可以生成產(chǎn)品版的系統(tǒng)映像,直接用于產(chǎn)品部署。

前面我們在測試各種外設(shè)功能的時候,生成的Android Studio工程文件都使用的是默認設(shè)置,在正式開發(fā)產(chǎn)品時,根據(jù)實際情況需要,還要修改工程的配置。例如需要指定自動啟動程序的Catogery屬性。

以上一節(jié)中的交互式GUI為例,AndroidManifest文件應(yīng)該修改如下

 <?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" />的這一行,有了這一行,該程序在系統(tǒng)啟動時自動啟動。

事實上,一般支持 Android Things的硬件相對來說是比較高端的硬件產(chǎn)品,只允許運行一個HomeActivity程序是不是浪費了硬件資源?這個問題應(yīng)該從兩個方面來理解:一是傳統(tǒng)的MCU產(chǎn)品,基本都只能部署一個程序,而且許多 Android Things硬件甚至也沒有提供GUI支持,所以這樣做實際上是簡化了產(chǎn)品部署的步驟;其次,如果確實需要更好的利用硬件資源,可以在程序里添加不同的功能模塊,在主Activity里做統(tǒng)一任務(wù)調(diào)度,保證各模塊功能的協(xié)調(diào)工作。

最后補充下  Android Things的Driver庫,這是 Android Things中SDK的有益補充。SDK中提供的GPIO、I2C及SPI等庫都是低級的基本操作,與具體的硬件設(shè)備無關(guān)。例如市面常見的OLED(SSD1306)模塊,一般使用I2C或SPI接口來進行通信,通信過程使用的具體指令通過I2C或SPI接口發(fā)送給模塊硬件,完成相應(yīng)的顯示功能。Drivers庫就是基于SDK開發(fā)的更高層的API接口,直接面向具體的硬件模塊。目前這個庫還在完善當中,目前主要有SSD1306, lowpan等設(shè)備的支持。

這些三方的Drivers的Github地址為:https://github.com/androidthings/contrib-drivers,歡迎大家貢獻自己的開源力量!

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論