Flash Lite移動應(yīng)用程序開發(fā)初探
隨著移動終端設(shè)備的發(fā)展,移動互聯(lián)網(wǎng)電子產(chǎn)品領(lǐng)域Apple風(fēng)頭正勁,Google也持續(xù)發(fā)力,兩大巨頭旗下產(chǎn)品iPhone和Android的競爭打的火熱。基于這兩個平臺的手機(jī)應(yīng)用程序開發(fā)也進(jìn)行的如火如荼。最近有機(jī)會著手進(jìn)行了一些手機(jī)Flash lite技術(shù)的預(yù)研工作,嘗試從另一個技術(shù)層面來探索手機(jī)應(yīng)用程序的開發(fā)。
主要關(guān)注了手機(jī)Flash Lite和電腦上運(yùn)行的Flash的一些技術(shù)差異。由于是在手機(jī)上運(yùn)行,F(xiàn)lash Lite特別需要考慮硬件性能和網(wǎng)絡(luò)傳輸?shù)乃俣葐栴},因此相對Flash進(jìn)行了一些功能削減。比如比較占內(nèi)存、耗費(fèi)CPU進(jìn)行圖形色彩運(yùn)算的濾鏡、混合模式等。如果主要用Flash Lite來做交互應(yīng)用,那么這些增強(qiáng)視覺效果的功能被削減掉并不會對程序開發(fā)有太大影響;讓開發(fā)者感到麻煩的是,F(xiàn)lash中一些功能較完善的標(biāo)準(zhǔn)UI控件在Flash Lite中也不能直接使用,如ComboBox,DataGrid等,開發(fā)時需要自己針對Flash Lite編寫代碼封裝簡裝版UI控件。
Flash Lite開發(fā)手機(jī)應(yīng)用程序值得注意的一些特點(diǎn)還主要體現(xiàn)在以下幾個方面:
1. 仍然使用AS 2.0腳本,目前最高版本的Flash lite 3x播放器還基于Flash Player 7開發(fā),而Flash編程語言AS 3.0已經(jīng)推出近3年,播放器目前版本已更新到 Flash Player 10。
幾年前Flash Lite推出時由于手機(jī)終端的支持不夠理想,研究的人比較少;現(xiàn)在平臺支持率雖大有改善,但Flash Lite的開發(fā)和運(yùn)行環(huán)境仍過于落后,很多開發(fā)者因此覺得沒有研究價值,導(dǎo)致應(yīng)用上也比較落后,研究資料相對較少。目前所見到的應(yīng)用比較多的都是單機(jī)小游戲,用來做網(wǎng)絡(luò)互聯(lián)應(yīng)用的案例少之又少。但這另一方面也反映出Flash Lite的發(fā)展?jié)摿?。無線互聯(lián)網(wǎng)的發(fā)展?fàn)顩r應(yīng)該跟有線互聯(lián)網(wǎng)早期的發(fā)展模式有相似之處。初期限于網(wǎng)速條件和硬件平臺的不足,使用素材都是比較節(jié)省的文本和小型圖片,應(yīng)用程序和游戲都以本地安裝文件為主;隨著網(wǎng)絡(luò)環(huán)境的改善和硬件的升級,聲光電影等多媒體素材也將逐步占領(lǐng)移動互聯(lián)網(wǎng),各種基于網(wǎng)絡(luò)的應(yīng)用程序和游戲也會更多地涌現(xiàn)出來。Adobe公司一直很注重Flash的跨平臺發(fā)展,相信將來無論哪種類型的手機(jī)OS勝出,都會對Flash Lite(或者干脆直接升級成Flash。補(bǔ)注:本文完成后已有最新消息 Adobe發(fā)布適用于google手機(jī)Android系統(tǒng)新版Flash10.1 )提供支持。從目前Flash在有線互聯(lián)網(wǎng)中的發(fā)展,可以預(yù)見Flash Lite在無線網(wǎng)絡(luò)中的一些未來。
2. Flash Lite提供了對一些手機(jī)設(shè)備專用功能的接口調(diào)用。
例如提供對手機(jī)大部分撥號按鍵、導(dǎo)航方向鍵和軟鍵(左右功能鍵)的接口支持,可以通過偵聽按鍵事件并設(shè)置響應(yīng)來控制用戶的交互流程;提供了讀取手機(jī)中部分設(shè)備信息的接口,如讀取電池電量、信號強(qiáng)度、音量、剩余內(nèi)存、接入網(wǎng)絡(luò)類型、背光時常以及震動模式等信息,以及通過Flash Lite撥打電話和發(fā)送短信的功能。但出于安全考慮,也存在很大的限制,很多設(shè)備接口Flash Lite不能直接調(diào)用,例如無法讀取短信、通訊錄數(shù)據(jù),以及對手機(jī)磁盤的讀寫等。不過在最新升級版Flash Lite3.1中,新加入了ActionScript擴(kuò)展功能,F(xiàn)lash Lite 開發(fā)人員可以通過ActionScript API 來使用DLL,通過該DLL文件來與主機(jī)設(shè)備公開的API進(jìn)行交互,這樣就實(shí)現(xiàn)了對手機(jī)設(shè)備操作系統(tǒng)API的調(diào)用(來自官方文檔,未經(jīng)編寫實(shí)際代碼測試)。
3. 沙箱安全模型更嚴(yán)格了。
在Flash Lite2.0時代,本地Flash Lite是能夠與網(wǎng)絡(luò)進(jìn)行通信的,用下載到手機(jī)中的Flash Lite編譯文件作為客戶端程序來進(jìn)行網(wǎng)絡(luò)交互完全可行。自Flash Lite 3.0起,手機(jī)存儲卡上的本地Flash Lite文件只能加載手機(jī)上的文件數(shù)據(jù),無法以任何方式與網(wǎng)絡(luò)進(jìn)行通信;而用瀏覽器訪問到的通過網(wǎng)絡(luò)發(fā)布的Flash Lite文件,就只能與網(wǎng)絡(luò)中的數(shù)據(jù)進(jìn)行通信,無法加載手機(jī)上的本地數(shù)據(jù)。而沙箱模型以終端手機(jī)上安裝的Flash Lite播放器的版本為準(zhǔn),比如,發(fā)布成Flash Lite2的SWF文件,如果在Flash Lite3 播放器里播放,就會遵循Flash Lite3的安全模型,因此開發(fā)者無法決定自己的程序?qū)⒃谀膫€安全模型下運(yùn)行。這也是一個關(guān)于得失取舍的辯證哲學(xué),更嚴(yán)格的安全模型會限制某些功能,關(guān)閉一些技術(shù)應(yīng)用的可能性通道,但是卻能贏得使用者的信任,有利于技術(shù)的進(jìn)一步推廣和發(fā)展。
4. 重點(diǎn)關(guān)注了Flash Lite網(wǎng)絡(luò)通信的相關(guān)技術(shù)。
在遵循沙箱安全模型的前提下,F(xiàn)lash Lite和Flash一樣都支持類似于AJAX中XMLHTTPRequest對象所使用的網(wǎng)絡(luò)通信方式,通過GET和POST方式向后臺程序發(fā)送和獲取數(shù)據(jù);另外在Flash中還支持Remoting和Socket兩種比較高級的通信方式,目前大多數(shù)使用Flash技術(shù)開發(fā)的游戲都采用這兩種方式。Remoting是一種遠(yuǎn)程調(diào)用服務(wù)器端封裝好的類與方法以進(jìn)行數(shù)據(jù)通信的技術(shù),需要在服務(wù)器端進(jìn)行一些程序配置以響應(yīng)客戶端的連接。Flash實(shí)現(xiàn)了Remoting客戶端并采用獨(dú)家的AMF格式數(shù)據(jù)與服務(wù)器進(jìn)行通信,而服務(wù)端除了Adobe官方的技術(shù),一些其他的服務(wù)器端語言也實(shí)現(xiàn)了開源版本的Remoting AMF,如phpamf,rubyamf,pyamf等,對Flash Remoting提供了更全面的服務(wù)器端支持。Socket通信在Flash里內(nèi)置支持,探索過程中我嘗試寫過一個簡單的多客戶端聊天室模型來熟悉通信過程 測試程序及源碼下載(服務(wù)器端腳本由資深Python開發(fā)工程師 Ljian 友情提供)。需要特別注意的是對比Flash Player9 和最近升級的Flash Player 10,Socket網(wǎng)絡(luò)通信的安全策略上發(fā)生了一些改變。Flash Player9及之前低版本的Flash播放器中,跨域以及Socket通信時只需要在目標(biāo)域下放置一個經(jīng)過授權(quán)配置的XML格式的安全策略文件即可。但現(xiàn)在這個安全策略文件只對HTTP方式的通信有效,進(jìn)行Socket通信的安全策略文件需要通過Socket的方式進(jìn)行發(fā)送,播放器默認(rèn)會以Socket方式向服務(wù)端843端口請求策略文件,如果沒有響應(yīng)就嘗試向Socket程序代碼中設(shè)定的監(jiān)聽端口發(fā)送請求。所以相應(yīng)的解決辦法需要在服務(wù)器端程序里監(jiān)聽843端口,收到Socket連接請求時發(fā)送安全策略文件,或者直接在Socket客戶端連接請求設(shè)定的監(jiān)聽端口中進(jìn)行發(fā)送。在上面提到的兩種高級通信方式中,F(xiàn)lash Lite目前只支持使用XMLSocket實(shí)現(xiàn)的實(shí)時通信,傳遞的數(shù)據(jù)要求是XML格式,相對比較低效,在目前網(wǎng)絡(luò)環(huán)境下能否應(yīng)用到實(shí)際項(xiàng)目中,還需要進(jìn)一步考察。
無線互聯(lián)網(wǎng)產(chǎn)品模式的發(fā)展,特別是一些Social Game游戲的興起,會對手機(jī)應(yīng)用程序的交互體驗(yàn)提出更高要求,給移動平臺Flash技術(shù)的發(fā)展帶來一定契機(jī)。移動平臺Flash技術(shù)的大發(fā)展,有賴于Adobe公司的積極努力進(jìn)取,也需要開發(fā)者的不斷探索嘗試和持續(xù)關(guān)注,讓我們拭目以待。
【編輯推薦】