Adobe AIR Android開發:開發之前需要了解的信息
2010年,Adobe公司成功地將AIR技術引入移動平臺,從此,一舉打開了通往移動領域的大門。而對于Flash開發者來說,該技術的出現為他們轉向移動應用開發提供了便利的條件。
2010年年底,AIR已經實現了對Android、BlackBerry Tablet OS和iOS三個移動操作系統的支持。從目前的狀況看,AIR在Android平臺上的表現最搶眼。一方面,AIR程序在Android設備(手機和平板電腦)上的運行性能得到了用戶的肯定;另一方面,當前市面上絕大部分Android手機和平板電腦都支持AIR程序,而且電子市場上使用AIR開發的程序數量呈上升趨勢。
因此,本文以Android平臺為目標,介紹AIR Android開發的必備知識,以及AIR Android的新功能和新特性。移動應用開發與桌面應用開發和Web應用開發相比,有其自身的特點。本文還將針對開發中的常見問題、程序設計技巧以及開發者關心的程序性能優化等內容進行重點講解。另外,由于AIR的跨平臺特性,很多內容同樣適用于BlackBerry Tablet OS和iOS平臺。
1.開發之前需要了解的信息
在國內知名的Flash開發者論壇上,關于AIR Android,許多朋友都提到以下問題:
AIR程序在手機上的性能如何?
可以使用Flex框架嗎?如何搭建開發環境?
如何發布APK文件?
必須使用Android的SDK嗎?
一定要使用真機嗎?
這一節,將針對這些問題給出答案。
2.AIR Android開發的可行性
可行性無疑是開發人員優先考慮的因素,如果開發的程序根本無法在設備上運行,或者用戶體驗很不友好,性能遠遠沒有達到設定的目標,那么技術就失去了實際意義。
從市場的反饋來看,用戶對AIR在Android上的性能表現相當滿意。2010年10月,AIR正式登陸Google電子市場(2012年3月更名為Google Play商店),在短短兩個月時間里,程序的累計下載量超過了25萬次。截至本書出版前,AIR的最新版本為3.1,支持Android 2.2及以上版本。
需要說明的是,并不是所有的Android設備都支持AIR。Adobe官方網站的信息顯示,設備必須滿足以下條件才能運行AIR:
Android 2.2或更高版本。
ARM v7-A或更高級的處理器。
支持OpenGL ES2.0。
支持H.264 & AAC H/W 解碼。
至少有256 MB內存。
一般情況下,安裝或升級到Android 2.2的設備都可以運行AIR,而市面上的Android設備很多都已經安裝或升級到2.2或以上版本了。在Android開發者站點上,會定期發布統計數據,讓開發者了解當前Android不同版本的市場狀況。圖1-1所示為2011年10月20日至11月3日的統計數據。數據顯示了在這兩周的時間內訪問Google電子市場的設備所對應的Android系統版本分布。
![]() |
(點擊查看大圖)圖1-1 Android版本市場份額 |
從數據上看,Android 2.2及以上版本占主導地位。2010年年底,Android 2.2的市場份額超過50%;2010年底發布Android 2.3后,到2011年11月,Android 2.3的市場份額已經超過2.2版成為市場主流。與過去的數據進行對比可以看出,Android 的發展速度真是日新月異。從1.5版到2.2版,Android進入了成熟期,不管是性能還是用戶體驗,都有了質的飛躍。2.3版在2.2版的基礎上增加了不少新功能,性能也有了大幅提升。Android 3.0是專門為平板電腦設計的系統,在2011年下半年的平板電腦熱潮中占據了越來越多的市場份額。2011年10月份發布的4.0版則是Android一個全新的版本,從界面到功能都有了很多引人矚目的變化,隨后就有大批采用新版系統的設備涌現出來。
Adobe官方網站上列出了支持AIR的設備列表,網址為http://www.adobe.com/flashplatform/ certified_devices/。從這個列表中可以看到,備受大家追捧的Nexus 系列、HTC Desire、Motor Milestone系列等。
可能有些開發者還有疑慮:如果用戶的手機中并沒有安裝AIR,那即便安裝了自己開發的應用程序也沒有什么意義。因為程序必要依靠AIR運行時(Runtime)才能運行。
事實上,這個擔心是多余的,Adobe已經為我們解決了這個問題。當用戶運行使用AIR技術開發的程序時,程序在啟動期間會判斷設備上是否安裝了AIR,如果安裝了,則調用AIR運行時來加載并運行程序;如果沒有,則彈出圖1-2所示對話框。
![]() |
圖1-2 提示安裝AIR的對話框 |
單擊“安裝”按鈕,設備會自動啟動其上的電子市場程序,并進入Adobe AIR的下載界面。
提示--判斷設備是否支持AIR,比較簡單的方法是:在設備上打開Google電子市場程序,搜索“Adobe AIR”,如果能夠找到該程序,則表示設備支持AIR,因為電子市場會自動根據手機型號進行過濾。
一些廠商對系統進行了個性化定制,移除了自帶的Google電子市場。如果無法通過Google電子市場安裝AIR運行時,也可以通過其他的應用商店安裝AIR運行時,比如國內的安卓市場、AppChina應用匯等。
另外,AIR 3.0引入了一個功能來解決AIR運行時的安裝問題,那就是captive-runtime,即將AIR運行時捆綁在程序中,使得程序不需要AIR運行時就可以直接運行,使程序成為完全獨立的應用。
別走開,下頁內容更精彩!
#p#
3.開發過程中常見的問題
雖然AIR在Android平臺上表現不錯,但由于其發布時間較短,再加上很多Flash平臺技術人員沒有移動開發經驗,仍然有許多這樣或那樣的問題。這一節將對一些常見問題予以解答。
Q1:AIR支持哪些開發環境?
A:AIR Android開發和Flash開發都使用相同的開發環境,大家可以選擇自己熟悉的開發環境比如Flash Professional CS5、Flash Builder等,也可以構建完全開源的開發環境。
AIR移動開發要求AIR SDK 2.5及以上版本,目前在Android上只支持Flash技術,不支持HTML和JavaScript。本章的后半部分會詳細介紹開發環境的搭建。
Q2:是否可以使用Flex框架進行AIR Android開發?
A:可以,但只適合Flex SDK 4.5及以上版本。因為Flex SDK 4.0以及更早的版本沒有針對移動設備進行優化,如果把用這些框架開發的程序放到設備上運行,會遇到很多“不算問題”的問題,比如,你會發現無法用手指去拖動那條狹長的滾動條,按鈕總是點不中,文本會被彈出的虛擬鍵盤擋住等。當然,最重要的是程序的性能不佳。
幸運的是,這些問題在新一代的Flex SDK中得到了解決。Adobe已經發布了代號為Hero的Flex SDK 4.5,同時發布的還有Flash Builder 4.5。新一代的Flex SDK采用了全新的設計結構,同時兼容Web、桌面和移動平臺,大大簡化了開發流程。
Q3:如何輸出APK文件?
A:APK是Android package的縮寫,即Android安裝包,文件名以.apk為后綴,是JAR文件的一種變體,類似Windows系統上的EXE文件。
AIR SDK自帶的編譯工具,除了支持打包為AIR文件外,還支持APK文件。不管是基于Flash Professional CS5的開發環境,還是Flash Builder 4.5,都提供了圖形化配置界面,簡化了發布流程。另外,我們也可以使用命令行的方式,實現自動編譯、打包和部署的“一條龍作業”。
Q4:一定要使用真機嗎?
A:這也是開發者關心的問題之一。可能剛接觸Android開發的開發者沒有合適的設備,所以Android SDK提供了模擬器工具,讓開發者在PC上就能體驗各個版本的Android系統。在模擬器上,除了沒有攝像頭、Google電子市場等特殊的功能以外,基本上和真機沒有區別。因此,不一定使用真機進行開發。
不過,在模擬器上無法看到程序真實的性能表現,故真機測試是移動開發最重要的一個環節。即便是安裝了相同版本的操作系統,在不同型號的設備上,程序的表現也可能會有差異。因此,只有在真機上測試才能得到最準確的信息。
Q5:是否支持跨平臺?
A:如上文所述,除了桌面操作系統,AIR已經實現了對Android、BlackBerry Tablet OS和iOS三個移動操作系統的支持。從技術角度看,針對Android和BlackBerry Tablet OS系統采用的是和桌面類似的方式,即Runtime(運行時)+ 應用程序,程序依托運行時才能運行;而在iOS平臺上,由于Apple的限制,Adobe采用了一種間接方式,為開發者提供了一套打包工具,可以將AIR程序連同運行時一起編譯為iOS原生代碼,程序不需要運行時就可以運行。因此,AIR在Android和BlackBerry Tablet OS上更符合跨平臺的條件。
經筆者測試,同一個程序,只要配置好相關參數,一行代碼都不用修改,就可以將應用部署到Android手機和PlayBook(采用BlackBerry Tablet OS的平板電腦)上。當然,前提是在程序設計中充分考慮了跨平臺的需求。
Q6:AIR Android和Flash Lite有什么聯系?
A:兩者沒有任何聯系。Flash Lite是Adobe針對移動開發的第一代解決方案,和AIR相比,它更像是針對低端智能手機的Flash Player,即使在硬件條件很有限的設備上,也能部署Flash內容。幾年前,智能手機的硬件水平遠沒有現在這么先進,如今,移動設備迅猛發展,連智能手機都開始運用“雙核”技術了,完全有能力運行更復雜的程序。因此,Flash Lite逐漸失去了用武之地。
Q7:Adobe不再繼續為移動設備開發Flash Player,是否也會停止AIR移動版的開發?
A:不會,兩者沒有任何聯系。2011年11月,Adobe宣布,該公司將正式停止為移動瀏覽器、操作系統開發移動版本Flash Player播放器。停止開發移動版Flash Player后,Adobe將把主要精力放在AIR桌面和移動版本開發上,因此,對AIR移動開發者來說,這其實是一個好消息。
4.優勢和局限性
我們常說的Android開發,是指以Java為編程語言,使用官方提供的SDK工具進行的開發。Android SDK提供了一整套功能強大的API,涵蓋了從圖形界面到系統底層控制等方方面面的功能。另外,官方還提供了一套NDK工具,允許開發者使用傳統的C或C++語言編寫程序,進行更底層的數據操作,進一步提升程序性能。
(1)優勢
既然Android自有的開發方式已經很完善了,那我們為什么還要使用AIR呢?筆者認為,主要有以下兩點因素:
1)AIR和Android自有的開發方式并不沖突,相反,AIR對Android平臺是一個很好的技術補充。
Flash技術的優勢在于界面呈現、交互處理。比如制作一段復雜的動畫,使用Java技術也可以實現,但肯定會遇到一些困難,花費不少時間,如果使用Flash技術,則會輕松很多。另外,AIR還擴展了Android平臺的技術生態圈。如今在移動平臺領域競爭激烈,Android引入AIR技術,能夠吸引龐大的Flash開發者隊伍加入進來,對Android平臺而言,有百利而無一害。
2)AIR的跨平臺特性依然是吸引開發者的利器。
對移動開發者來說,跨平臺歷來是個難題。平臺間的移植所耗費的時間和人力成本,對企業而言,是一筆不小的支出。因此,對一些企業來說,AIR是一個相當經濟的解決方案。AIR支持多個桌面操作系統,包括Windows、Mac和Linux,現在這個名單上又多了Android、iOS和BlackBerry Tablet OS,而且Adobe還在努力支持更多平臺,在未來的一段時間內,這個名單可能還會繼續增長。
(2)局限性
當然,AIR也有自己的局限性。
1)不支持所有版本的Android系統。
AIR只支持Android 2.2及以上版本,且需要安裝運行時,對設備的硬件要求比較高。如果用戶需要支持所有型號的設備,那么AIR就無法滿足。不過這個缺點幾乎可以忽略不計,因為目前Android 2.2和2.3已經成為市場主流,對早期的版本提供支持意義不大。
2)AIR不提供訪問系統底層資源的API。
這也是AIR在各個平臺上的“通病”。具體到Android設備上,AIR沒有針對移動設備提供額外的功能,比如獲取用戶的通信錄、短信、通信記錄等數據。
AIR 3.0引入了一個新功能—本地擴展(AIR Native Extension,ANE)。ANE允許開發者使用本地原生API為AIR編寫擴展庫,來實現AIR API無法做到的功能,包括訪問系統底層資源。有了ANE這個利器,可以使很多不可能的任務成為可能。ANE可以被當做共享庫分發,目前已經有很多開發者將自己編寫的ANE分享出來,相信在未來一段時間,AIR在移動平臺上的應用與原生開發環境制作出來的應用的差距會越來越小。