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