自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員用五分鐘把一個(gè)400多MB的蘋(píng)果安裝包削掉了187MB

移動(dòng)開(kāi)發(fā) 移動(dòng)應(yīng)用
前些日子,一個(gè)手機(jī)QQ安裝包就要快900MB的事兒在網(wǎng)上吵得沸沸揚(yáng)揚(yáng):最新安裝包又大了,已經(jīng)924MB。雖然最后大家發(fā)現(xiàn)它主要為了視頻通話特效多了一個(gè)虛幻引擎,但網(wǎng)友還是感嘆:現(xiàn)在的App真的是越來(lái)越大了。而就在最近,國(guó)外一位程序員也遇到了同樣的困惑。

前些日子,一個(gè)手機(jī)QQ安裝包就要快900MB的事兒在網(wǎng)上吵得沸沸揚(yáng)揚(yáng):最新安裝包又大了,已經(jīng)924MB。雖然最后大家發(fā)現(xiàn)它主要為了視頻通話特效多了一個(gè)虛幻引擎,但網(wǎng)友還是感嘆:現(xiàn)在的App真的是越來(lái)越大了。

而就在最近,國(guó)外一位程序員也遇到了同樣的困惑。

他乘的一班飛機(jī)由于沒(méi)有機(jī)上小電視,只能下載一個(gè)叫做“美聯(lián)航”的App來(lái)看視頻打發(fā)時(shí)間。

小哥一邊感嘆現(xiàn)在航空公司越來(lái)越雞賊:把成本都加到顧客頭上,一邊打開(kāi)了應(yīng)用商店,結(jié)果就很詫異:

不就用來(lái)看個(gè)電影啥的嗎,一個(gè)Netflix都只有101.5MB,這App怎么是它的四倍?

作為一名iOS/Android開(kāi)發(fā)工程師,小哥決定不“坐以待斃”,看看它是否真的需要這么大的空間。

原來(lái)可以省掉187MB

說(shuō)干就干,還在飛機(jī)上的小哥立刻用ipatool下載了這個(gè)App的二進(jìn)制文件。

ipatool是GitHub上標(biāo)星1.4K的開(kāi)源項(xiàng)目,是一個(gè)命令行工具,可以從iOS應(yīng)用商店搜索和下載應(yīng)用程序的ipa文件包,用這個(gè)包可以進(jìn)行開(kāi)發(fā)內(nèi)容的一些檢查等功能。

下好以后需要把ipa擴(kuò)展名改為zip,解壓之后可以看到下面這樣的目錄:

可以發(fā)現(xiàn)Frameworks就占了414.8MB,小哥解釋:應(yīng)用程序的主要內(nèi)存來(lái)源就是Frameworks,現(xiàn)在的最佳實(shí)踐都是把代碼push到這里面,還是挺正常的。

接下來(lái)進(jìn)入該目錄:

以UAL開(kāi)頭的框架是核心架構(gòu)、NodeMobile框架跟NodeJS功能有關(guān)、LocusLabSSDK和Mapbox是供應(yīng)地圖的,還有一些是負(fù)責(zé)身份驗(yàn)證、客戶反饋的……

而視頻播放相關(guān)的框架相反其實(shí)占內(nèi)存并不多:

接著進(jìn)入占空間最大的UALAppCore.framework。

經(jīng)過(guò)層層探索,小哥終于在這里鎖定了最大占存的UALAppCore。

按照他的工作經(jīng)驗(yàn),77MB這個(gè)數(shù)字還是有點(diǎn)反常的,他打算用nm命令深入看看這個(gè)框架的符號(hào)表(symbol)文件(nm用于顯示二進(jìn)制目標(biāo)文件的符號(hào)表,格式如下)。

很快他就想起來(lái),Swift的符號(hào)需要?jiǎng)冸x(strip,iOS框架中的術(shù)語(yǔ)),Objective-C則不需要。

那就查Swift的,結(jié)果還真就發(fā)現(xiàn):

  • 沒(méi)有一個(gè)Swift框架的符號(hào)被剝離過(guò)。

而這些都沒(méi)有用,白白耗內(nèi)存:

那接下來(lái)就簡(jiǎn)單了,寫(xiě)一個(gè)bash腳本運(yùn)行一下該框架就可以O(shè)K:

最后,可以看到原始框架從350MB減到了163M!

小哥表示,這一頓操作只花了不到5分鐘,沒(méi)想到可削減空間這么大,整整省掉了187MB。

等于現(xiàn)在的安裝包只有原來(lái)的不到60%了。

他猜測(cè)該安裝包仍有削減空間,不過(guò)這個(gè)結(jié)果他已經(jīng)很滿意了。

你,學(xué)廢了嗎?

“開(kāi)發(fā)商才不關(guān)心呢”

就在小哥發(fā)出這個(gè)博客之后,有網(wǎng)友評(píng)論道,還有很多安裝包其實(shí)都可以再縮減15%到30%甚至更高的空間,就比如Gmail、Outlook這些很常見(jiàn)的應(yīng)用。

但似乎現(xiàn)在很多開(kāi)發(fā)商不是很關(guān)心這個(gè)問(wèn)題,他們只想趕緊不停更新應(yīng)用:

給不給用戶省掉這幾百M(fèi)的流量都一樣賺錢(qián),為啥還要費(fèi)功夫呢?

有一位嵌入式工程師就表示:當(dāng)我跟同事提起要注意這方面的優(yōu)化時(shí),他們總是給我一個(gè)茫然的眼神。

有網(wǎng)友認(rèn)為:除非各應(yīng)用商店開(kāi)始管這事兒,開(kāi)發(fā)商是不會(huì)做出改變的。就單說(shuō)手機(jī)廠商就很樂(lè)意看到這一場(chǎng)面,內(nèi)存不夠就可以去他們那買(mǎi)新手機(jī)了。

他還發(fā)現(xiàn)谷歌Play Store好像就不顯示應(yīng)用程序大小。

而一些銀行App在這個(gè)問(wèn)題上尤其嚴(yán)重,因?yàn)樗麄冎滥悴粫?huì)輕易換銀行。

你怎么看?

責(zé)任編輯:未麗燕 來(lái)源: 量子位
相關(guān)推薦

2023-05-27 21:13:34

FlaskURL裝飾器

2025-04-16 08:20:00

LinuxELF文件

2022-06-28 12:35:21

DockerPython

2009-05-21 16:23:23

程序員法則職場(chǎng)

2012-02-07 10:11:46

程序員

2020-02-22 21:51:43

程序員Microsoft SServerSQL

2020-11-10 09:01:52

DPDK網(wǎng)絡(luò)監(jiān)控

2014-01-06 09:33:32

程序員管理

2022-01-17 09:01:23

NodeJS數(shù)據(jù)服務(wù)器Mock

2018-05-14 13:25:18

程序員朝九晚五編程

2020-10-05 21:13:37

程序員技能開(kāi)發(fā)者

2012-02-22 15:55:48

JavaPlay Framew

2011-02-14 13:05:17

PythonWeb

2015-06-08 10:48:39

程序員程序員自白

2020-07-10 09:55:15

程序員技能開(kāi)發(fā)者

2015-06-16 10:31:36

程序員

2009-05-31 15:26:35

中國(guó)移動(dòng)4G

2009-10-28 11:44:34

VB.NET資源文件

2009-11-16 10:53:30

Oracle Hint

2024-12-11 07:00:00

面向?qū)ο?/a>代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)