和前幾年iOS能夠憑籍App數量將安卓壓倒在地、安卓嬌喘吁吁起身不能的情況不同,現在安卓的App數量對比iOS平台可謂是有過之而無不及。2009年安卓系統起航伊始,Google Android Market內App數量僅有可憐的1萬9千個,而現在Play商店內App已經接近一百萬個,和蘋果App Store相比毫不遜色甚至更多。
安卓App為數龐大,安卓已經靠第三方慢慢充實自身內涵
然而高產似乎沒有為安卓App帶來好的口碑,在人們印象中,安卓App的作風和華強北相仿,粗制濫造頗有天朝四百八十寨的雄姿,FC卡頓有如家常便飯。那麼為何安卓App的質量如此低居不上呢?下面就讓我們一起來看看。
精品安卓App的秘密:Holo框架
安卓App數十萬計,當然其中也不乏精品,畢竟Play商店還不至於淪落成垃圾場。Play商店經常會在主頁放置Google官方推薦的安卓App,這些精品App往往有一個共同點,那就是按照安卓Holo設計規范編寫。
Play商店推薦應用Fancy,使用了Holo框架
也許有的朋友對Holo這個詞並不熟悉,的確這在國內很少被提及。Holo是Google在安卓4.0發布之時提出的安卓App交互及界面設計標 准,Google希望籍此為眾多的安卓App開發者提供一個設計參考——在之前大家的參考對象都是iOS應用的界面,甚至是塞班應用的界面。此 外,Google也在Holo中弱化了菜單鍵,這讓開發者很容易將iOS上的應用遷移到安卓平台,畢竟iOS沒有菜單鍵,為了吸引App移植安卓只能在這 方面向iOS靠攏了。
Google官方列舉的三種Holo主題樣式
Google為確立Holo標准做了很多努力,親自上陣編寫了Holo規范的條條框框,如規劃操作區域、操作手勢、功能模塊的布局邏輯甚至是所使用素材 的大小。由於有Google深入參與,所以按照Holo規范設計的App自然也享受到了很多標准化帶來的好處,比如說更容易對多種分辨率進行適配,和原生 系統格調更一致,也更容易利用硬件機能,操作更流暢。
Google事無巨細地制訂了Holo框架,包括素材大小等
雖然不少人對Holo的布局頗有微辭,如將按鈕放置在難以操作到的屏幕頂部等,但Holo的美觀及高效卻得到了眾人的好評,左右滑動切頁很銷魂啊有木 有。而且,雖說Holo規范裁定了App交互的大體邏輯和框架,但Holo允許開發者在功能區放置自制控件,這又為開發者們提供了天馬行空的余地。 Holo出現後,國外大量安卓App開發者紛紛跟進,新一代的安卓App變得前所未有的美觀簡潔高效。
Holo:強大卻不強硬
Holo是很好很強大,但Holo卻有一個致命傷——它並非是一種強制性的標准。實際上Google也沒法強制推行Holo標准,讓新系統只兼容Holo,畢竟大量基於舊版開發組件編寫的App擺在那,扔掉不是作死麼。
Holo很好,但沒法強推,因為不是所有的安卓設備都能像Nexus那樣用到最新系統
由於Holo並非是一個強制推行的框架,所以安卓App開發者們並不必須使用Holo開發App。用Holo開發App自然好處多多,然而這些好處不是 你想拿就能拿。就拿國內來說,大部分安卓機都是中低端機型,這些機器往往又沒啥機會使用新版安卓。在Holo剛開始推行的時候,國內大部分機器還在使用 2.×甚至是1.×的系統,Holo在這些機器上發揮不出優勢甚至出現各種奇怪的問題,FC啊卡頓啊排版錯亂什麼的猶如家常便飯。
直到現在,非Holo主題的安卓2.3仍在占有率最高的安卓版本
在此種情況下,國內的安卓App開發者只要想賺錢,都不太可能去跟進Holo規范。用戶可不懂什麼技術不技術,釋出一個時靈時不靈的App,只會被用戶 罵成蜂窩煤。此外,國內軟件也一直有深度定制自己界面的傳統,君不見現在連Windows桌面都能被國內軟件商定制得一張桌面百樣臉,安卓深度定制版更有 N個是出自國人之手。想要讓國內軟件商乖乖跟進一個和自己沒啥商業合作的Google所制定的規范,只走尋常路,似乎有些不太符合國情。
目前,國內的App開發商更傾向於讓安卓App和iOS App長成同一張臉,畢竟iOS的設計風格更廣為人知,將不同平台的App統一成一種設計風格也有利於樹立自己的品牌形象。國內典型的在安卓平台上使用iOS風格的軟件商有騰訊、新浪等等,特別是騰訊,無論是微信還是QQ,安卓版和iOS版除了系統頂欄外,基本長成一個樣。
去掉標題欄,你猜猜哪個是微信的iOS版,哪個是安卓版?
隨著時代的發展,國內安卓機的系統也在慢慢更新,現在出爐的機器安卓版本最低也是4.0了。安卓4.×逐漸普及後,國產安卓App由於開發歷史悠久,慣 性使然,依然沒有跟進Holo規范——推倒重做多心疼。因此,國內的安卓App很難享受到新系統帶來的好處,如GPU加速等,這讓很多人抱怨為啥都黃油計 劃了App還是這麼卡。而大量高分辨率安卓機的出現進一步讓這些使用舊版開放工具開發的安卓App的缺點暴露無遺,素材被拉伸變模糊,而按鈕的布局也變得 不適合在大屏幕上操作——想想長了5寸大屏的iPhone吧,你一定點不到後退按鈕的。
iOS應用的布局在4寸屏的iPhone5中仍難以點到按鈕,何況在5寸屏安卓機
總的來說,安卓App質量不高很大一個原因就是沒有按照Google的Holo設計規范編寫,這在國內又尤為明顯。你問為啥國外的App會廣泛使用 Holo規范?那是安卓機在安卓4.0發布前在國外並不怎麼好賣,安卓4.0和Holo規范發布後安卓開始在市場一次次爆發小宇宙,國外軟件商才開始重 視,自然也會選擇用Holo寫App了。再加之Google在國外的影響力大得多,誰都知道自己的安卓App長得像iOS的話,Google是沒可能把它 擺在Play商店的推薦位的——在南韓掛北韓國旗不是作死麼。
大部分App仍使用Java開發
“安卓基於Java”、“安卓App使用Java開發”這類的觀點見得很多,但實際上這種說法有失偏頗。Google很早就發布了安卓NDK(Native Development Kit,原生開發套件),開發者可在NDK中使用C語言編寫安卓App。
使用NDK開發安卓App,效率會大為提高
在NDK中使用C語言編寫安卓App的好處是顯而易見的,就是性能大為提高。性能提高有多高?三四層樓那麼高啦。在性能測試軟件CF-Bench中,基 於NDK的性能是基於SDK(也就是使用Java的開發套件)的三倍以上,十分驚人。可以說,只有使用NDK,才能最大程度發揮安卓機的性能。
NDK編寫的安卓App速度遠比SDK編寫的快
NDK好處多多,但到了開發者那裡就不怎麼受待見了。首先,和SDK相比,NDK能做的東西有限,程序員難以在NDK中用純C開發一款安卓App,到頭 來還是得用Java去實現一些功能,這增添了安卓的開發難度。其次,使用NDK開發的安卓App兼容性往往不如在SDK中用Java編寫的安卓App好, 畢竟SDK寫的App有Davilk虛擬機支持