開發(fā)者談 AppStore“大問題”:應用體積越來越大
來自vadodara的技術編輯Khamosh Pathak每個月在iPhone上花費的流量數據達到了10GB以上,而這只是他為了下載新的應用程序或者進行更新。他說,在過去的幾年里,他所消耗的數據流量已經大大增加了。
事實上,Pathak的觀點代表了越來越多的iPhone和iPad用戶的擔憂,他們認為現(xiàn)在App Store里的應用程序體積正在變得越來越大。例如,你可以看到,F(xiàn)acebook應用和Uber應用的體積都在250MB以上,而在App Store更新選項上列出的數字往往更糟,比如Facebook就達到了300MB以上。
相反,在Android手機上下載Facebook只需使用70MB的數據,Uber只需30MB,而更新文件通常不超過30MB。在App Store上,微軟Excel的大小為219MB,但是從Google Play下載不到60MB。同樣,根據App Store上的顯示,《口袋妖怪Go》(Pokemon Go)應用的大小為244MB,而在Google Play下載則在100MB以下。
盡管蘋果確實為開發(fā)者提供了一些減少應用程序大小的建議,但蘋果對于這個問題的更多信息依然守口如瓶,因此我們并不能確定蘋果是否正在努力解決這個問題,或者它是否把它視為一個問題。
但這些說法真的站得住腳嗎?gadget 360就與幾個開發(fā)人員對這個問題進行了交流。
為什么這很重要?
更大的應用程序意味著某些時候你需要消耗更多的數據流量,或者占用你的設備更多的空間。這可能會使得蘋果公司在印度等新興市場推廣其產品具有更大的挑戰(zhàn)性,畢竟蘋果正越來越希望iPhone能在這些國家和地區(qū)占領更多的市場。
一部分的問題在于,當我們下載和檢查應用程序的大小時,我們意識到Google Play列出了下載這個應用所需要的的流量大小,如果你查看一個應用程序的信息,你會看到一個顯示下載大小的標題。然而,在App Store上,這一部分被稱為“體積”,它似乎是指應用程序在你的設備上所占用的空間大小,也就是說,當你從App Store下載的應用在你的手機或平板電腦上打開時是經過解壓縮的,最終占據的空間大小要比下載的大小要多。
當然,這兩種方法各有利弊。谷歌向你展示了你需要使用多少數據流量來獲得這個應用,這在印度等國家是一個重要因素,因為這些國家對數據成本仍然很敏感。而蘋果的數據則告訴你,你要獲得這個應用需要占用設備的多少空間,如果你擔心你的設備存儲空間不夠,這同樣很重要。
問題的根源
除此之外,應用程序大小還存在一個真正的問題,一些開發(fā)人員告訴gadget 360,現(xiàn)在的應用程序規(guī)模大小正越來越大,部分原因在于開發(fā)人員添加了新功能,當然,許多用戶顯然也喜歡這一點。
“應用程序正變得越來越大,因為iOS設備同樣也在強大,開發(fā)者們正在為他們的應用程序構建越來越復雜的東西,而不考慮這樣的程序規(guī)模會對世界有什么影響”。開發(fā)者斯蒂芬·特勞頓-史密斯(Stephen troughton - smith)告訴gadget 360。史密斯是最知名的iOS開發(fā)人員之一,他經常在蘋果發(fā)布新產品之前,通過挖掘相關設備的固件信息進行爆料,比如最近通過HomePod固件挖掘iPhone 8新特性的不少消息,就是出自他手。
但是,也有部分原因是由于開發(fā)人員不小心,并添加了多個文件造成的,史密斯補充道。“因此,F(xiàn)acebook、Twitter和其他大公司也許有數十或數百人在構建他們的iOS應用程序。這些應用程序的許多組件或框架都是獨立開發(fā)的,如果你要把每一個額外的組件都整合到一個應用程序上,就會產生一些開銷。有些團隊會重復或復制其他團隊所寫的功能,比如圖像或其他資源等等”。
開發(fā)人員需要添加的高分辨率圖像資源同樣也會造成應用程序的增大,兩個來自印度的開發(fā)者以及PSPDFKit的創(chuàng)始人兼首席執(zhí)行官彼得·斯坦伯格(Peter Steinberger)告訴gadget 360。
蘋果或許也需要承擔一定的“責任”,因為開發(fā)者在使用蘋果于2014年推出的Swift編程語言時,需要他們在應用程序中添加幾個組件,這同樣會使得應用程序變得更“重”。
“例如,蘋果的新Swift語言需要在每次使用時都嵌入一堆組件,因為它還沒有達到‘ABI穩(wěn)定’”。史密斯解釋道。這意味著開發(fā)人員需要嵌入他們開發(fā)的庫版本,而不是依賴于系統(tǒng)上可用的版本。
另一個不愿意透露姓名的開發(fā)人員稱:“通常一個使用Swift語言構建的應用程序需要在程序中填充多達30個Swift運行時庫。除此之外,你可能還會驚訝于一些應用程序里使用了不少在其它應用中(比如GitHub)找到的通用代碼。”
“開發(fā)人員往往不關心是否去刪除與應用程序無關的內容,”他補充道。
應用程序的大小增長了1100%
營銷和研究公司Sensor Tower在6月份發(fā)表的一篇博客文章中寫道:“安裝量排在前十的iPhone應用程序已從2013年5月的164 MB增長到了上個月的大約1.9 GB,短短四年間就增加了12倍或約1,100%。”而反觀iPhone的存儲容量改變速度卻被遠遠甩開,基礎款的iPhone存儲容量在最近才從16GB上升到了32GB。
Sensor Tower的移動負責人蘭迪·尼爾森(Randy Nelson)表示,iOS應用程序仍在繼續(xù)包含多個版本的資源(圖像,按鈕等),以滿足不同屏幕尺寸的需求(iPhone 7,iPhone 7 Plus,iPhone SE或iPad),這極大地影響了用戶的存儲空間。
尼爾森解釋說“這與Android世界的工作方式不同,即便安卓也有更多不同種類的設備,擁有不同的規(guī)格和屏幕尺寸,但通常來說,其資源都是會按比例放大或縮小的。”
“另一個原因在于這些應用程序在iOS與Android上所需的庫和SDK的數量和類型。此外,iOS上的應用程式代碼是加密的,并且造成的二進制文件大大超過了Android。最終,是許多方面不同的原因導致了iOS與Android應用程序之間產生的大小差異。”
較大的應用程序可能會對一些用戶只造成輕微的煩惱,或者對于居住在西方市場的用戶根本不成問題,但它確實會在像印度這樣的市場帶來不小的影響,因為這些地方無線網絡并不是很發(fā)達,又或者他們手機的數據流量往往很有限。而根據市場研究公司Counterpoint的數據,16GB iPhone 5是去年在印度最受歡迎的iPhone型號,可想而知,他們所用設備的存儲空間也存在著不少限制。
來自舊金山的開發(fā)人員本·桑福德斯基(Ben Sandofsky)是Twitter的iOS應用程序開發(fā)團隊的一員,他對于這樣的擔憂產生了共鳴,并表示:“這些(西方)公司的員工生活在一個互聯(lián)網和科技都最先進的地方,他們有充足的LTE數據連接,快速的wifi網絡,64GB存儲空間的手機,這導致了他們在考慮周邊普通用戶時產生了盲點。”
桑福德斯基最近為iPhone開發(fā)了流行的第三方Halide相機應用,他補充說:“在不考慮一些用戶負擔的情況下,確實可以讓工程師和經理們的工作變得更輕松。而且在iPhone應用程序之間重復使用通用代碼比以往任何時候都要容易。只要敲擊幾下鍵盤,工程師就可以在應用程序中添加數千行代碼,理論上這很好,因為工程師不需要重復工作做同樣的事情。但不幸的是,在過去的幾年里,事情已經變得越來越瘋狂了,工程師們在他們的應用程序里添加了龐大的庫,這也導致了應用程序的體積越來越龐大,而原本他們就可以通過創(chuàng)建更小的程序來完成這個任務。”
但這也不是全部,桑福德斯基說道,公司經常增加A / B測試來推動產品開發(fā)。這意味著他們會在一個應用程序中進行小的實驗性更改,比如改變一個按鈕的顏色,然后觀察分析,看看是否有更多的人點擊它,這也就產生了一系列不會為最終用戶帶來任何價值的跟蹤代碼。而真正的關鍵還在于這一系列廢棄的實驗常常在代碼中被擱置。許多公司都沒有刪除它們,所以代碼庫每天未使用的代碼都在增長。
“太多的公司使用指標來推動所有的決策了,你可以測試出有沒有更多的人點擊了這個按鈕,但你很難衡量一個用戶為什么放棄了一個應用程序,或者為什么用戶從來沒有下載過一個應用程序。”