為什麼Android App質量不高並且卡頓崩潰
和前幾年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虛擬機器支援,不需要直接和硬體對話。目前安卓硬體百花繚亂,ARM廠商就十幾個,之上還有ARM和X86兩大陣營,用 SDK的確是更明智的選擇。
移動市場分為ARM和X86兩大硬體陣營,ARM中又有N家制造商,比七國還亂
使用Java開發安卓App固然方便,但也容易拉低安卓App質量。雖說安卓系統利用Davilk虛擬機器執行Java,比非智慧平臺的JVM效 率高得 多,但始終沒法和NDK相比,你怪安卓的App慢,這份怨念很大一部分得餵給Java吃。Java自帶記憶體回收機制,所以開發者使用Java寫安卓App 時往往不注意控制記憶體洩漏(特別是一些小軟體),當其程式超過Davilk虛擬機器分配的閥值後,就會被系統殺掉釋放記憶體,這樣一來就有可能造成App的崩 潰、系統的假死等情況。
並不是說Java不能編寫出精品App,但Java的確容易造成問題
總的來說,安卓上並不是沒有高效的程式碼,但碎片化的硬體讓開發者們很少考慮NDK,容易造成問題的Java仍被廣泛使用。那麼什麼安卓App最常使用NDK開發呢?答案是大型遊戲。反正紋理資料包都要針對硬體匹配,也不差在主程式省力氣了,更何況遊戲對程式碼效率要求很高。如果你看到同一個遊戲的安卓版本比iOS版卡頓,往往因為安卓機硬體太低——iOS裝置的圖形效能比安卓機高太多了。
管理不力的Google,混亂的生態
歸根到底,程度都是人寫的。即使你的安卓App沒用Holo框架,也沒用NDK,只要用心開發,仍舊能成為精品。然而安卓平臺的風氣並不怎麼好,隱約有劣幣驅逐良幣之勢,混亂的生態和Google管理不力有很大的關係。
Google Play市場是安卓最安全、最規範的市場,Google Play市場已經是安卓市場模範中的模範——相信這點沒人反對吧。然而就是這麼一個正規的、大牌的、由Google親自管理的市場,仍然充滿著濫用高權 限、植入惡性廣告、依靠刷榜上位的App。連官方市場都如此,你能指望第三方市場怎麼樣?
我寫文章的時候隨便一找就能找到這種App,名字誘惑,許可權充滿殺機
安卓平臺上是不乏精品App,然而劣質App一人一口痰估計就能把那些用心開發的好App淹掉。你問我為啥大家都不開發精品App?好,下面我們一起來看看好App是如何滾蛋的。
如果你是一名個人開發者,那麼保守估計,開發一個精品安卓應用需要歷時三個月,然後App在Play商店上架了,很快就廣為流傳。過了幾天你突 然發現, 你的App已經被刷榜者刷下去了,錢都沒收到幾分。再回過頭一看,你的App已經被人從系統中提取出來,解包後重新封包,並被加入了大量惡性外掛,並在 Play市場外的各種渠道流傳。
在安卓App中加點料,不用啥力氣,來錢快得很
於是很多使用者安裝這個被加了料的App後,個人資訊被盜取,作惡者靠販賣使用者資訊發了一筆小財——各種騙子電話就搶著買個人資訊呢。於是你就轉 念想,原 來安卓上這樣來錢才快,然後就不再開發精品App,轉而去搞旁門左道去了——寫寫釣魚App刷刷榜只是舉手之勞,何必這麼辛苦。
彷若你有良心,不幹偷雞摸狗的事情,但只憑心意是吃不飽飯的。心灰意冷之下,自然也就停止更新,轉投更靠譜的iOS平臺去了。只要你的App做得好,蘋果會好好對你的。你可以說蘋果抽水三成太多,但你不能說蘋果收了錢不幹事。
蘋果App Store的健康生態是安卓無法企及的
實話說,如果不是背景深厚實力充足的公司,很難單靠安卓平臺長久混下去;就算在安卓平臺上賴著,多也只是雙修,錢還是從蘋果App Store那裡得來。吃著地溝油喝著毒奶粉能幹贏天天吃牛肉的大漢麼?安卓的生態和蘋果相比,也就是北京環境與西藏天空的區別了。
後話
在系統層面上,安卓擁有很多不輸於iOS、甚至能讓iOS羨慕嫉妒恨的特性。然而在App質量方面,安卓想要和iOS比肩為時尚早——如果說 iOS的軟 件生態是溫室大棚的話,安卓仍只停留在刀耕火種的時代。安卓仍在快速發展,並一次次迸發出活力,不少人都認為安卓擁有超越iOS的潛力。然而如果安卓 App的質量一直都上不去,估計安卓也只能一直潛在水裡、被人落下粗製濫造口實了。
相關文章
- 執行緒崩潰為什麼不會導致 JVM 崩潰執行緒JVM
- Android 高質量開發之崩潰最佳化Android
- APP防崩潰APP
- 360瀏覽器總是崩潰是為什麼 360瀏覽器經常崩潰怎麼解決瀏覽器
- app 崩潰的原因APP
- 【效能管理】為毛我的APP崩潰了?!APP
- 360瀏覽器總是崩潰是為什麼 360經常崩潰解決修復方法介紹瀏覽器
- Android進階;App的異常崩潰處理AndroidAPP
- 怎麼樣把mysqld壓測到崩潰重啟?什麼情況下mysqld崩潰重啟?MySql
- 為什麼Android的圖片質量會比iPhone的差?AndroidiPhone
- WkWebView 令人崩潰的崩潰WebView
- Now冥想:崩潰服務和效能服務助力提升應用質量
- Android都到了4GB 為什麼卡頓還存在?Android
- 分析為什麼有時在非UI執行緒更新UI會崩潰UI執行緒
- android Activity崩潰日誌收集Android
- Android Service入門到崩潰Android
- 質量監控-卡頓檢測
- 為什麼 APM 能提升 IT 團隊工作質量?
- Android 收集程式崩潰異常資訊Android
- Android 12 “致命”崩潰解決之路Android
- Android中處理崩潰異常Android
- WKWebView崩潰WebView
- Redis崩潰Redis
- 文章質量檢測工具怎麼提高文章質量?提高質量有什麼方法?
- 乾貨|安卓APP崩潰捕獲方案——xCrash安卓APP
- 什麼是資料質量?
- Android7.1.1Toast崩潰解決方案AndroidAST
- 簡便地Android崩潰日誌收集Android
- win10系統崩潰藍屏什麼原因 win10系統出現崩潰藍屏如何修復Win10
- 既然測試地位不高,為什麼你還要做測試?
- Crittercism:KitKat崩潰率0.7% iOS 7.1崩潰率1.6%iOS
- 華為手機使用 appium 截圖後,app 崩潰APP
- WWDC 2018:理解崩潰以及崩潰日誌
- 為什麼我做的Android app會那麼卡?AndroidAPP
- win10 pr崩潰怎麼解決_win10 pr崩潰解決辦法Win10
- Android 崩潰日誌採集元件-DhccCrashLibAndroid元件
- TestBird 崩潰分析(Artisan) Android SDK 使用指南Android
- 為什麼爬蟲離不開高質量的HTTP代理?爬蟲HTTP