基于A(yíng)ndroid的嵌入式Web服務(wù)器設計
摘要:隨著(zhù)Internet技術(shù)的興起,在嵌入式設備的管理與交互中,基于Web方式的應用成為目前的主流。本文主要論述了基于Android系統環(huán)境,在家庭網(wǎng)關(guān)中實(shí)現嵌入式Web服務(wù)器的設計方法,介紹了i-jetty嵌入式Web服務(wù)器,及其Web應用功能的實(shí)現。
關(guān)鍵詞:Android;嵌入式Web服務(wù)器;i-jetty;SQLite
只要在嵌入式設備中集成了Web服務(wù)器,就能實(shí)現用戶(hù)與嵌入式設備低成本、高通用性的信息交流,即客戶(hù)端利用HTTP瀏覽器,在任何時(shí)間、任何地點(diǎn)都能實(shí)現與嵌入式設備的信息交互??梢哉f(shuō),嵌入式Web的應用極大地促進(jìn)嵌入式設備,特別是家電設備、通信終端、儀器儀表的信息交互和遠程控制功能。
在三網(wǎng)融合的大背景下,通過(guò)家庭網(wǎng)關(guān)實(shí)現外部網(wǎng)絡(luò )即電視網(wǎng)、電信網(wǎng)、因特網(wǎng)與家庭內部電話(huà)、電視、電腦以及家庭電器設備的通訊,是當前家居智能化、現代化的重要發(fā)展趨勢。本文的主要內容是研究基于家庭網(wǎng)關(guān)的嵌入式系統,實(shí)現簡(jiǎn)單實(shí)用的Web服務(wù)器功能,為外部網(wǎng)絡(luò )提供一個(gè)方便快捷地訪(fǎng)問(wèn)和控制家庭內部資源的平臺。由于Android操作系統能方便地將各種應用程序嵌入網(wǎng)絡(luò ),以及開(kāi)放性好、支持硬件豐富的特點(diǎn),本文選擇Android操作系統作為家庭網(wǎng)關(guān)設計的軟件平臺來(lái)建立Web服務(wù)器。
1 Android系統介紹
Android移動(dòng)設備平臺是基于Linux內核再度開(kāi)發(fā)的一個(gè)開(kāi)源的操作系統和軟件平臺,最早期由Google公司進(jìn)行研究和開(kāi)發(fā)的。后來(lái)Goog le為了推廣此技術(shù),它和中國移動(dòng)、HTC、三星、摩托羅拉等幾十家手機通信運營(yíng)商和制造商,建立了開(kāi)放手機聯(lián)盟,共同開(kāi)發(fā)Android移動(dòng)設備平臺。
Android采用了軟件堆層的架構,主要分為三部分:其最底層是基于Linux內核進(jìn)行再度開(kāi)發(fā)的,Linux內核只提供最為基礎的功能;中間層包括由C++開(kāi)發(fā)的虛擬機Virtual Machine(VM)和函數庫Library;最上層是各種應用軟件,包括通話(huà)程序、短信程序等。應用軟件則由各公司自行開(kāi)發(fā),以Java編寫(xiě)。每個(gè)Android應用程序都在VM的一個(gè)實(shí)例中運行,這個(gè)實(shí)例駐留在一個(gè)由Linux內核管理的進(jìn)程中。
本文實(shí)現的Web應用雖然基于A(yíng)ndroid操作系統,但并不像通常的Android APP那樣,需要一個(gè)AndroidManifest.xml文件包含必要的配置信息,且需要一個(gè)Activity類(lèi)來(lái)提供UI。因為是Web服務(wù)不需要用戶(hù)圖形界面,只要用到Android提供的接口而已,即android.jar,這是一個(gè)Java歸檔文件,其中包含構建應用程序所需的所有的Android SDK類(lèi)。而且,由于A(yíng)ndroid VM的原因,不能直接使用.class文件,需要轉換為.dex文件,這些內容將在下文詳細介紹。
2 系統設計
在嵌入式系統中,主控制芯片的選擇對于整個(gè)系統性能和良好運行有著(zhù)至關(guān)重要的影響,在選擇主控芯片的過(guò)程中,需綜合考慮芯片自身的性能、兼容性、價(jià)格以及后續的升級等因素。綜合考慮以上因素,本文設計的家庭網(wǎng)關(guān)采用了Cortex—A8處理器作為硬件平臺。因為Cor tex—A8支持大型的操作系統,高頻率、高級存儲管理及豐富的外設接口,為Android系統的運行提供了良好的硬件基礎。
一個(gè)Web服務(wù)器也被稱(chēng)為HTTP服務(wù)器,它通過(guò)HTTP協(xié)議與客戶(hù)端通信。這個(gè)客戶(hù)端通常指的是Web瀏覽器。Web服務(wù)器監聽(tīng)瀏覽器的服務(wù)請求,根據用戶(hù)請求的類(lèi)型提供相應的服務(wù);Web服務(wù)器在接收到用戶(hù)端的請求后,處理用戶(hù)請求并返回需要的數據。這些數據通常以格式固定、含有文本和圖片的頁(yè)面出現在用戶(hù)端瀏覽器。本文Web服務(wù)器系統的設計架構如圖1所示。
目前常用的嵌入式Web服務(wù)器主要有boa、thttpd、mini_httpd、shttpd和lighttpd等,但它們都不能直接應用于A(yíng)ndroid系統上。本文選用代碼精煉、擴展性強的開(kāi)源i-jettyWeb服務(wù)器,它可直接運行在A(yíng)ndroid系統上,為Servlet提供運行環(huán)境鈍能。
Servlet是一種獨立于平臺和協(xié)議的Web服務(wù)器端的Java應用程序,可以生成動(dòng)態(tài)的Web頁(yè)面。與傳統的從命令行啟動(dòng)的Java應用程序不同,Servlet由Web服務(wù)器進(jìn)行加載。
一個(gè)Web服務(wù)器系統是離不開(kāi)數據庫的支持。SQLite是一款輕型的數據庫,是遵守ACID的關(guān)聯(lián)式數據庫管理系統,它是針對嵌入式產(chǎn)品而設計的,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。Android平臺集成了SQLite數據庫,并提供了操作的API。所以,只要在Servlet中引入開(kāi)發(fā)Android程序提供的API,就能實(shí)現用Servlet操作SQLite。
本文下面主要介紹i—ierry web嵌入式服務(wù)器的搭建,以及如何實(shí)現Servlet對SQIrite數據庫的操作。
2.1 i-jetty Web服務(wù)器及其安裝
i—jetty是一個(gè)將開(kāi)源Web容器Jetty移植到GoogleAndroid手機平臺的開(kāi)源項目,可以使嵌入式設備上運行Web應用。Jetty是一個(gè)100%由Java實(shí)現的、開(kāi)源的HTYP服務(wù)器和javax.servlet容器,它不僅僅作為一個(gè)獨立服務(wù)軟件(如Tomcat)被使用,而且其優(yōu)良的組件(Compone t)設計、高內聚低耦合、高擴展性等特性使得Jetty非常易于作為嵌入式工具使用??傊?,Jetty具有的優(yōu)點(diǎn)包括:
1)配置使用簡(jiǎn)單;
2)設計模塊化,代碼簡(jiǎn)練易懂;
3)Tomcat的應用移植到Jetty基本不用修改;
4)非常適合嵌入式產(chǎn)品,可擴展性好;
i—jetty是使用Java語(yǔ)言編寫(xiě)的,它的API以一組JAR包的形式發(fā)布。開(kāi)發(fā)人員可以j將Jetty容器實(shí)例化成一個(gè)對象,可以迅速為一些獨立運行(stand—alone)的Java應用提供網(wǎng)絡(luò )和web連接。使用簡(jiǎn)單、配置簡(jiǎn)單,體積很小,但它的功能齊全,并且還是一個(gè)Servlet容器,這就讓動(dòng)態(tài)網(wǎng)頁(yè)實(shí)現和后臺操作(例如數據庫操作)成為可能。同時(shí),i—jetty可以使用Android的接口,這就降低了開(kāi)發(fā)的難度和復雜度。i—jetty與其他主流的服務(wù)器一樣,只要將已經(jīng)做好的Web項目發(fā)布到服務(wù)器的Webapps目錄下,就能實(shí)現網(wǎng)站的正常運行,十分的方便。
下面介紹i—jetty服務(wù)器的安裝:
首先,在eclipse里創(chuàng )建i—jetty的android項目,將下載的i—jetty源碼覆蓋進(jìn)去。然后,將下面目錄下的jar引入到i—jetty項目中:C:\Documents and Settings\org\eclipse\jetty,還需要servlet-api-2.5.jar。最后,編譯i-jetty,并將其安裝到設備中。此后,即可對服務(wù)器進(jìn)行各種配置。若想要使用自己的Web應用,則可以將自己的Web工程打包成war包,并將war包直接放到/sdeard/jetty /webapps/目錄下。
評論