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