深入分析為何安卓App質(zhì)量不高與卡頓崩潰
和前幾年iOS能夠憑籍App數(shù)量將安卓壓倒在地、安卓嬌喘吁吁起身不能的情況不同,現(xiàn)在安卓的App數(shù)量對(duì)比iOS平臺(tái)可謂是有過之而無不及。2009年安卓系統(tǒng)起航伊始,Google Android Market內(nèi)App數(shù)量僅有可憐的1萬9千個(gè),而現(xiàn)在Play商店內(nèi)App已經(jīng)接近一百萬個(gè),和蘋果App Store相比毫不遜色甚至更多。
安卓App為數(shù)龐大,安卓已經(jīng)靠第三方慢慢充實(shí)自身內(nèi)涵
然而高產(chǎn)似乎沒有為安卓App帶來好的口碑,在人們印象中,安卓App的作風(fēng)和華強(qiáng)北相仿,粗制濫造頗有天朝四百八十寨的雄姿,F(xiàn)C卡頓有如家常便飯。那么為何安卓App的質(zhì)量如此低居不上呢?下面就讓我們一起來看看。
精品安卓App的秘密:Holo框架
安卓App數(shù)十萬計(jì),當(dāng)然其中也不乏精品,畢竟Play商店還不至于淪落成垃圾場。Play商店經(jīng)常會(huì)在主頁放置Google官方推薦的安卓App,這些精品App往往有一個(gè)共同點(diǎn),那就是按照安卓Holo設(shè)計(jì)規(guī)范編寫。
Play商店推薦應(yīng)用Fancy,使用了Holo框架
也許有的朋友對(duì)Holo這個(gè)詞并不熟悉,的確這在國內(nèi)很少被提及。Holo是Google在安卓4.0發(fā)布之時(shí)提出的安卓App交互及界面設(shè)計(jì) 標(biāo) 準(zhǔn),Google希望籍此為眾多的安卓App開發(fā)者提供一個(gè)設(shè)計(jì)參考——在之前大家的參考對(duì)象都是iOS應(yīng)用的界面,甚至是塞班應(yīng)用的界面。此 外,Google也在Holo中弱化了菜單鍵,這讓開發(fā)者很容易將iOS上的應(yīng)用遷移到安卓平臺(tái),畢竟iOS沒有菜單鍵,為了吸引App移植安卓只能在這 方面向iOS靠攏了。
Google官方列舉的三種Holo主題樣式
Google為確立Holo標(biāo)準(zhǔn)做了很多努力,親自上陣編寫了Holo規(guī)范的條條框框,如規(guī)劃操作區(qū)域、操作手勢(shì)、功能模塊的布局邏輯甚至是所 使用素材 的大小。由于有Google深入?yún)⑴c,所以按照Holo規(guī)范設(shè)計(jì)的App自然也享受到了很多標(biāo)準(zhǔn)化帶來的好處,比如說更容易對(duì)多種分辨率進(jìn)行適配,和原生 系統(tǒng)格調(diào)更一致,也更容易利用硬件機(jī)能,操作更流暢。
Google事無巨細(xì)地制訂了Holo框架,包括素材大小等
雖然不少人對(duì)Holo的布局頗有微辭,如將按鈕放置在難以操作到的屏幕頂部等,但Holo的美觀及高效卻得到了眾人的好評(píng),左右滑動(dòng)切頁很銷魂 啊有木 有。而且,雖說Holo規(guī)范裁定了App交互的大體邏輯和框架,但Holo允許開發(fā)者在功能區(qū)放置自制控件,這又為開發(fā)者們提供了天馬行空的余地。 Holo出現(xiàn)后,國外大量安卓App開發(fā)者紛紛跟進(jìn),新一代的安卓App變得***的美觀簡潔高效。
Holo:強(qiáng)大卻不強(qiáng)硬
Holo是很好很強(qiáng)大,但Holo卻有一個(gè)致命傷——它并非是一種強(qiáng)制性的標(biāo)準(zhǔn)。實(shí)際上Google也沒法強(qiáng)制推行Holo標(biāo)準(zhǔn),讓新系統(tǒng)只兼容Holo,畢竟大量基于舊版開發(fā)組件編寫的App擺在那,扔掉不是作死么。
Holo很好,但沒法強(qiáng)推,因?yàn)椴皇撬械陌沧吭O(shè)備都能像Nexus那樣用到***系統(tǒng)
由于Holo并非是一個(gè)強(qiáng)制推行的框架,所以安卓App開發(fā)者們并不必須使用Holo開發(fā)App。用Holo開發(fā)App自然好處多多,然而這些 好處不是 你想拿就能拿。就拿國內(nèi)來說,大部分安卓機(jī)都是中低端機(jī)型,這些機(jī)器往往又沒啥機(jī)會(huì)使用新版安卓。在Holo剛開始推行的時(shí)候,國內(nèi)大部分機(jī)器還在使用 2.×甚至是1.×的系統(tǒng),Holo在這些機(jī)器上發(fā)揮不出優(yōu)勢(shì)甚至出現(xiàn)各種奇怪的問題,F(xiàn)C啊卡頓啊排版錯(cuò)亂什么的猶如家常便飯。
直到現(xiàn)在,非Holo主題的安卓2.3仍在占有率***的安卓版本
在此種情況下,國內(nèi)的安卓App開發(fā)者只要想賺錢,都不太可能去跟進(jìn)Holo規(guī)范。用戶可不懂什么技術(shù)不技術(shù),釋出一個(gè)時(shí)靈時(shí)不靈的App,只 會(huì)被用戶 罵成蜂窩煤。此外,國內(nèi)軟件也一直有深度定制自己界面的傳統(tǒng),君不見現(xiàn)在連Windows桌面都能被國內(nèi)軟件商定制得一張桌面百樣臉,安卓深度定制版更有 N個(gè)是出自國人之手。想要讓國內(nèi)軟件商乖乖跟進(jìn)一個(gè)和自己沒啥商業(yè)合作的Google所制定的規(guī)范,只走尋常路,似乎有些不太符合國情。
目前,國內(nèi)的App開發(fā)商更傾向于讓安卓App和iOS App長成同一張臉,畢竟iOS的設(shè)計(jì)風(fēng)格更廣為人知,將不同平臺(tái)的App統(tǒng)一成一種設(shè)計(jì)風(fēng)格也有利于樹立自己的品牌形象。國內(nèi)典型的在安卓平臺(tái)上使用iOS風(fēng)格的軟件商有騰訊、新浪等等,特別是騰訊,無論是微信還是QQ,安卓版和iOS版除了系統(tǒng)頂欄外,基本長成一個(gè)樣。
去掉標(biāo)題欄,你猜猜哪個(gè)是微信的iOS版,哪個(gè)是安卓版?
隨著時(shí)代的發(fā)展,國內(nèi)安卓機(jī)的系統(tǒng)也在慢慢更新,現(xiàn)在出爐的機(jī)器安卓版本***也是4.0了。安卓4.×逐漸普及后,國產(chǎn)安卓App由于開發(fā)歷史 悠久,慣 性使然,依然沒有跟進(jìn)Holo規(guī)范——推倒重做多心疼。因此,國內(nèi)的安卓App很難享受到新系統(tǒng)帶來的好處,如GPU加速等,這讓很多人抱怨為啥都黃油計(jì) 劃了App還是這么卡。而大量高分辨率安卓機(jī)的出現(xiàn)進(jìn)一步讓這些使用舊版開放工具開發(fā)的安卓App的缺點(diǎn)暴露無遺,素材被拉伸變模糊,而按鈕的布局也變得 不適合在大屏幕上操作——想想長了5寸大屏的iPhone吧,你一定點(diǎn)不到后退按鈕的。
iOS應(yīng)用的布局在4寸屏的iPhone5中仍難以點(diǎn)到按鈕,何況在5寸屏安卓機(jī)
總的來說,安卓App質(zhì)量不高很大一個(gè)原因就是沒有按照Google的Holo設(shè)計(jì)規(guī)范編寫,這在國內(nèi)又尤為明顯。你問為啥國外的App會(huì)廣泛 使用 Holo規(guī)范?那是安卓機(jī)在安卓4.0發(fā)布前在國外并不怎么好賣,安卓4.0和Holo規(guī)范發(fā)布后安卓開始在市場一次次爆發(fā)小宇宙,國外軟件商才開始重 視,自然也會(huì)選擇用Holo寫App了。再加之Google在國外的影響力大得多,誰都知道自己的安卓App長得像iOS的話,Google是沒可能把它 擺在Play商店的推薦位的——在南韓掛北韓國旗不是作死么。
大部分App仍使用Java開發(fā)
“安卓基于Java”、“安卓App使用Java開發(fā)”這類的觀點(diǎn)見得很多,但實(shí)際上這種說法有失偏頗。Google很早就發(fā)布了安卓NDK(Native Development Kit,原生開發(fā)套件),開發(fā)者可在NDK中使用C語言編寫安卓App。
使用NDK開發(fā)安卓App,效率會(huì)大為提高
在NDK中使用C語言編寫安卓App的好處是顯而易見的,就是性能大為提高。性能提高有多高?三四層樓那么高啦。在性能測(cè)試軟件CF- Bench中,基 于NDK的性能是基于SDK(也就是使用Java的開發(fā)套件)的三倍以上,十分驚人??梢哉f,只有使用NDK,才能***程度發(fā)揮安卓機(jī)的性能。
NDK編寫的安卓App速度遠(yuǎn)比SDK編寫的快
NDK好處多多,但到了開發(fā)者那里就不怎么受待見了。首先,和SDK相比,NDK能做的東西有限,程序員難以在NDK中用純C開發(fā)一款安卓 App,到頭 來還是得用Java去實(shí)現(xiàn)一些功能,這增添了安卓的開發(fā)難度。其次,使用NDK開發(fā)的安卓App兼容性往往不如在SDK中用Java編寫的安卓App好, 畢竟SDK寫的App有Davilk虛擬機(jī)支持,不需要直接和硬件對(duì)話。目前安卓硬件百花繚亂,ARM廠商就十幾個(gè),之上還有ARM和X86兩大陣營,用 SDK的確是更明智的選擇。
移動(dòng)市場分為ARM和X86兩大硬件陣營,ARM中又有N家制造商,比七國還亂
使用Java開發(fā)安卓App固然方便,但也容易拉低安卓App質(zhì)量。雖說安卓系統(tǒng)利用Davilk虛擬機(jī)運(yùn)行Java,比非智能平臺(tái)的JVM效 率高得 多,但始終沒法和NDK相比,你怪安卓的App慢,這份怨念很大一部分得喂給Java吃。Java自帶內(nèi)存回收機(jī)制,所以開發(fā)者使用Java寫安卓App 時(shí)往往不注意控制內(nèi)存泄漏(特別是一些小軟件),當(dāng)其進(jìn)程超過Davilk虛擬機(jī)分配的閥值后,就會(huì)被系統(tǒng)殺掉釋放內(nèi)存,這樣一來就有可能造成App的崩 潰、系統(tǒng)的假死等情況。
并不是說Java不能編寫出精品App,但Java的確容易造成問題
總的來說,安卓上并不是沒有高效的代碼,但碎片化的硬件讓開發(fā)者們很少考慮NDK,容易造成問題的Java仍被廣泛使用。那么什么安卓App最常使用NDK開發(fā)呢?答案是大型游戲。反正紋理數(shù)據(jù)包都要針對(duì)硬件匹配,也不差在主程序省力氣了,更何況游戲?qū)Υa效率要求很高。如果你看到同一個(gè)游戲的安卓版本比iOS版卡頓,往往因?yàn)榘沧繖C(jī)硬件太低——iOS設(shè)備的圖形性能比安卓機(jī)高太多了。
管理不力的Google,混亂的生態(tài)
歸根到底,程度都是人寫的。即使你的安卓App沒用Holo框架,也沒用NDK,只要用心開發(fā),仍舊能成為精品。然而安卓平臺(tái)的風(fēng)氣并不怎么好,隱約有劣幣驅(qū)逐良幣之勢(shì),混亂的生態(tài)和Google管理不力有很大的關(guān)系。
Google Play市場是安卓最安全、最規(guī)范的市場,Google Play市場已經(jīng)是安卓市場模范中的模范——相信這點(diǎn)沒人反對(duì)吧。然而就是這么一個(gè)正規(guī)的、大牌的、由Google親自管理的市場,仍然充滿著濫用高權(quán) 限、植入惡性廣告、依靠刷榜上位的App。連官方市場都如此,你能指望第三方市場怎么樣?
我寫文章的時(shí)候隨便一找就能找到這種App,名字誘惑,權(quán)限充滿殺機(jī)
安卓平臺(tái)上是不乏精品App,然而劣質(zhì)App一人一口痰估計(jì)就能把那些用心開發(fā)的好App淹掉。你問我為啥大家都不開發(fā)精品App?好,下面我們一起來看看好App是如何滾蛋的。
如果你是一名個(gè)人開發(fā)者,那么保守估計(jì),開發(fā)一個(gè)精品安卓應(yīng)用需要?dú)v時(shí)三個(gè)月,然后App在Play商店上架了,很快就廣為流傳。過了幾天你突 然發(fā)現(xiàn), 你的App已經(jīng)被刷榜者刷下去了,錢都沒收到幾分。再回過頭一看,你的App已經(jīng)被人從系統(tǒng)中提取出來,解包后重新封包,并被加入了大量惡性插件,并在 Play市場外的各種渠道流傳。
在安卓App中加點(diǎn)料,不用啥力氣,來錢快得很
于是很多用戶安裝這個(gè)被加了料的App后,個(gè)人信息被盜取,作惡者靠販賣用戶信息發(fā)了一筆小財(cái)——各種騙子電話就搶著買個(gè)人信息呢。于是你就轉(zhuǎn) 念想,原 來安卓上這樣來錢才快,然后就不再開發(fā)精品App,轉(zhuǎn)而去搞旁門左道去了——寫寫釣魚App刷刷榜只是舉手之勞,何必這么辛苦。
彷若你有良心,不干偷雞摸狗的事情,但只憑心意是吃不飽飯的。心灰意冷之下,自然也就停止更新,轉(zhuǎn)投更靠譜的iOS平臺(tái)去了。只要你的App做得好,蘋果會(huì)好好對(duì)你的。你可以說蘋果抽水三成太多,但你不能說蘋果收了錢不干事。
蘋果App Store的健康生態(tài)是安卓無法企及的
實(shí)話說,如果不是背景深厚實(shí)力充足的公司,很難單靠安卓平臺(tái)長久混下去;就算在安卓平臺(tái)上賴著,多也只是雙修,錢還是從蘋果App Store那里得來。吃著地溝油喝著毒奶粉能干贏天天吃牛肉的大漢么?安卓的生態(tài)和蘋果相比,也就是北京環(huán)境與西藏天空的區(qū)別了。
后話
在系統(tǒng)層面上,安卓擁有很多不輸于iOS、甚至能讓iOS羨慕嫉妒恨的特性。然而在App質(zhì)量方面,安卓想要和iOS比肩為時(shí)尚早——如果說 iOS的軟 件生態(tài)是溫室大棚的話,安卓仍只停留在刀耕火種的時(shí)代。安卓仍在快速發(fā)展,并一次次迸發(fā)出活力,不少人都認(rèn)為安卓擁有超越iOS的潛力。然而如果安卓 App的質(zhì)量一直都上不去,估計(jì)安卓也只能一直潛在水里、被人落下粗制濫造口實(shí)了。