不知道各位有沒有這種感想——一兩年前買的手機、平板,沒怎么拍照,也沒怎么聽歌,只是平時裝了幾個微信、游戲……然后,突然容量就不夠用了!?
因為容量不夠,不僅無法更新軟件,甚至有時就連日常功能都會難以使用——會出現相機無法拍照、應用無法打開或無法正常加載等等煩心的現象。最可氣的是,其實這時候手機的硬件性能(比如CPU、GPU什么的)根本沒有過時——但設備就是“癱瘓”了。
遇到這種情況,大部分朋友的反應會是“手機容量太小了,該換了”,但也有不甘心的人試圖刪除幾個APP來拯救設備,這時候你也許會發現——為什么最常用的APP越做越大了??
以微信為例,2011年發布的微信2.0版是第一個加上了語音功能的微信,但當時它的安卓版安裝包大小僅有1.4MB。六年過去,最新的微信版本是6.5.10,而它的安卓版本安裝包體積已經高達45MB,增大了30倍!而在iOS平臺上則更加嚇人——207MB的安裝包體積甚至已經在一些手游之上了。
如此一來,對于一些老型號、小容量智能設備來說,即使正常的軟件更新也有可能直接導致存儲“告急”,甚至使得設備失去使用價值。對于這樣的現象,筆者常常可以聽到一種說法。他們認為:應用程序的“體積膨脹”是軟件開發者和硬件生產商之間勾結的陰謀,目的就在于加速老設備的淘汰,逼用戶換新機……
真的是這樣么?其實,我們也許是太喜歡“陰謀論”了——應用“膨脹”真實原因,遠比你想象的要復雜。
功能增加是主因
這是最容易想到的——新的功能必然會需要更多的代碼和資源來實現,應用因此變大再正常不過。
就以微信為例,2011年的時候,微信不過只是“加上了語音功能的聊天軟件”;如今它卻已經成為了具備社交、視頻、購物、游戲、運動、新聞、郵件等諸多功能的集合體,甚至還有運行在其上的“小程序”……這樣一來,體積能不大么?
不過,要承認,其實這些增加的功能并非人人都需要——比如說就不是人人都會在微信里買東西或者玩游戲,但相關的功能卻并不會因此取消,它至少還在浪費著我們的手機容量……
設備規格促進程序進化
除了功能增加,硬件設備本身的規格改變也會逼程序員對程序作出較大的改動——一般來說,這都會導致體積的增加。
最典型的例子是iPhone和iPad——最早的幾代iPhone屏幕分辨率是480x320,到了iPhone4,屏幕分辨率一下子提高了四倍(960x640)。由于蘋果強制要求APP適配新的分辨率——這就意味著,用于iPhone4之后的APP中,界面素材的部分就要占用至少原來四倍大的存儲空間。
那么iPad Pro屏幕分辨率高達2732 x 2048,其對應的APP僅在界面部分的圖片資源就比初代iPhone對應APP要大了三十六倍……
當然,除了單純的因為界面分辨率提升而導致的空間占用增大外,由于手機性能大幅增強,過去我們不曾想象的諸多高畫質手游、大型計算程序(比如PS、CAD)也開始出現在手機上。
它們畫面復雜、功能先進、用戶體驗極為強大。當然,負面作用就是超大的安裝包、占用幾百兆甚至好幾個GB。有時候(特別是對于游戲來說),安裝之后還會有額外的數據包或熱更新下載,這就更吃存儲空間了。
“碎片化”不容忽視
剛剛說了設備屏幕分辨率/硬件性能的提高會促使更大、更強但也更占存儲空間的APP出現。但實際上,由于新老設備會在用戶群中共存很長很長的時間,對于開發者來說,要想保證自家的APP在各種不同規格的手機/平板上都能正常工作,只好針對每種不同分辨率、硬件平臺的手機分別寫不同的優化代碼。
這種情況下,APP在發行(也就是在應用商店上架)的時候就出現問題了——理想的做法是給每個不同分辨率和硬件平臺的設備分別出一個分支版本,這樣既能保證兼容和性能,又能最大程度縮減應用體積。
但問題是——不是所有的應用商店都足夠“聰明”啊!谷歌的安卓官方商城(Google Play Store)的確允許開發者這樣做,商城會自動識別用戶的硬件型號,只顯示最適合的軟件版本。
但幾乎所有的國內安卓商城都沒有這個功能——對于開發者來說,只好把所有不同設備的適配代碼做到一個安裝包里,然后在安裝的時候自動識別——其中也包括大量舊的冗余代碼(比如對很老很老的手機的適配界面)。這樣一來,應用體積不大才怪了。
雖然一般認為這種硬件上的“碎片化”導致的軟件臃腫現象只會出現在Android(也就是安卓)系統設備上。但事實上,因為蘋果近兩年來持續改變新iPhone/iPad的屏幕分辨率,iOS設備也已經有了碎片化的跡象……
富裕的極客程序員
相信看到這里的朋友,一定會對這條原因有點詫異——程序員有錢,和程序本身的臃腫有什么關系么?
實際上還真有:其根源來自程序員本身在編寫應用時所使用的調試設備(通俗地來說,就是程序員用來測試已經寫好的程序時使用的手機、平板、電腦)。
因為程序員(開發者)們長期接觸到的是業界最新的技術、開發文檔、編程思想;他們也有足夠的財力去購買剛剛推出的最新最強的手機、平板一變進行針對性的優化。試想一下,當你已經習慣了電腦里好幾TB的固態硬件陣列,所用的手機最少也有64GB或者128GB的存儲空間——你會覺得這是理所當然的,它就是未來的技術發展方向,所以只要自己寫出的應用可以適配這些“旗艦機”就好。
這種想法并沒有什么惡意,也確實符合整個業界可持續發展的利益——但無形中,這就把那些生活拮據、或是自己沒有能力、動力更新硬件設備的消費者排除在外了。他們很快就會發現自己的設備不再流暢,甚至開始無法正常使用——僅僅是因為手機自動更新了幾個軟件。
結果或是“兩極分化”
最終,所有的這些因素綜合在一起,結果就是在數碼產品的使用者之間劃出了一道巨大的“鴻溝”。那些消費得起頂級旗艦設備的人在很長時間里都能得到優質的應用體驗:所有的軟件運行流暢,功能豐富,體驗甚至有可能(因為針對性優化)越來越好——他們手中的高價手機會非常“保值”。
而反之,廉價入門設備的消費者有可能從一開始就得不到良好的使用體驗,甚至是“剛到手就被淘汰”,或是在一年不到的時間里就變得卡頓、難以使用,不得不再掏錢更換新機。從長遠的角度來看,這會造成類似“富者愈富,貧者愈貧”的效應……
但是——對此我們能怪誰呢?其實可以說誰也沒有錯——錯的只是技術發展的速度和經濟福利普及的速度不相稱。這里面并沒有“陰謀”,有的只是無奈。
評論