Emerge 是一個(gè)監(jiān)測(cè)和減少應(yīng)用程序大小的平臺(tái),可以持續(xù)監(jiān)測(cè)并分析應(yīng)用程序二進(jìn)制大小,幫助開(kāi)發(fā)者編寫(xiě)更小、更好的代碼。近日 Emerge 發(fā)布了一份報(bào)告,顯示最新版本的 Xcode 存在會(huì)無(wú)意中增加應(yīng)用程序體積的問(wèn)題。
Xcode 14 于今年 9 月份正式發(fā)布,新版本添加了對(duì) Swift 5.7 的支持,并針對(duì) macOS Ventura、iOS/iPadOS 16 等最新系統(tǒng)添加了 SDK,除此之外,新版本 Xcode 的速度更快、體積縮小了 30%、增加的并行性使得構(gòu)建項(xiàng)目的速度提高了 25%,以及長(zhǎng)時(shí)間運(yùn)行測(cè)試的速度提高了 30%。
但在 Xcode 14 發(fā)布后不久,Emerge 發(fā)現(xiàn)一些 iOS 應(yīng)用程序的體積則是出現(xiàn)了明顯增加,其中從 9 月中旬到 10 月初之間,觀測(cè)到:
耐克 iOS 應(yīng)用程序的安裝大小一開(kāi)始僅為 182.2MB,之后變成了 322.1MB,空間占用增加了 76%
American Airlines(美國(guó)航空)從 182.2MB 增加到 389.1MB,增加了 113%
Chime 從 162.8MB 增加到 212.8MB,增加了 31%
在上述這些例子中,應(yīng)用空間占用突然增大都是由于這些應(yīng)用程序首次使用了 Xcode 14 構(gòu)建,而歸根結(jié)底,導(dǎo)致這個(gè)問(wèn)題發(fā)生的原因就是 Xcode 14 默認(rèn)禁用了 Bitcode。
Xcode 14 更新文檔中寫(xiě)道:
Xcode 不再默認(rèn)構(gòu)建 Bitcode,在未來(lái)的 Xcode 版本中,使用 Bitcode 構(gòu)建的功能將被移除。含有 Bitcode 的 IPA 將在提交給 App Store 之前被剝離 Bitcode。
什么是 Bitcode
Bitcode 是打包應(yīng)用程序的一種方式,它可以在開(kāi)發(fā)者把應(yīng)用提交到 App Store 后,將部分構(gòu)建過(guò)程留給蘋(píng)果公司完成,蘋(píng)果所做的事情之一是剝離二進(jìn)制符號(hào)。
什么是二進(jìn)制符號(hào)剝離
二進(jìn)制符號(hào)剝離(Binary symbol stripping)是指從二進(jìn)制文件中刪除某些類型的元數(shù)據(jù),這些元數(shù)據(jù)對(duì)于在生產(chǎn)中運(yùn)行應(yīng)用程序是非必要的。這些元數(shù)據(jù)在生產(chǎn)前可能是有幫助的,但之后只會(huì)讓用戶的手機(jī)變得更加臃腫。
簡(jiǎn)單的解釋是,Bitcode 通過(guò)剝離二進(jìn)制符號(hào)優(yōu)化了生產(chǎn)構(gòu)建。如果不打開(kāi) Bitcode,開(kāi)發(fā)者就需要修改 Xcode 的構(gòu)建設(shè)置,從而以其他方式剝離二進(jìn)制符號(hào)。
也就是說(shuō),當(dāng)開(kāi)發(fā)者更新至 Xcode 14 之后,任何依賴 Bitcode 的應(yīng)用程序都不再會(huì)從其生產(chǎn)的應(yīng)用程序中剝離二進(jìn)制符號(hào)了,這意味著一個(gè)應(yīng)用程序可以在不增加任何功能的情況下出現(xiàn)體積大幅增加的情況。
Emerge 深度分析了耐克的 iOS 端應(yīng)用程序,在 22.35.0 版本中,框架在 191.7MB 的安裝大小中占了 163.7MB。而到了 22.36.1 版本,框架在 322.1MB 的總?cè)萘恐屑ぴ龅?293.8MB。注意在每個(gè)框架中發(fā)現(xiàn)的深藍(lán)色的 "String Table" 的增加。
通過(guò)比較這兩個(gè)版本,可以發(fā)現(xiàn)幾乎所增加的 130MB 的體積都來(lái)自于 DYLD.String Tables。這些字符串表本身是非必要的元數(shù)據(jù),而它們現(xiàn)在已經(jīng)進(jìn)入了生產(chǎn)構(gòu)建中。
兩個(gè)版本應(yīng)用程序的二進(jìn)制符號(hào)也從 213.9KB (占應(yīng)用程序總大小的 0.11%)增長(zhǎng)到了 127.5 MB(占應(yīng)用程序總大小的 40%)。也就是說(shuō)耐克 iOS 應(yīng)用程序在沒(méi)有任何重大功能變化的同時(shí),增加了 130MB。(上圖:Xcode 14 之前的二進(jìn)制符號(hào)大小;下圖:Xcode 14 之后中的二進(jìn)制符號(hào)大小)
除了上述提到的這些應(yīng)用,此次體積大幅增加的還包括了 Chrome、Amazon、Twitter、Twitch、ESPN 等常用的軟件。
應(yīng)用程序的大小是影響你的應(yīng)用程序的安裝和卸載指標(biāo)的最大因素之一,過(guò)于臃腫會(huì)降低應(yīng)用安裝率和提升卸載率,尤其是對(duì)于手機(jī)空間比較有限的用戶來(lái)說(shuō)更加如此,最終會(huì)導(dǎo)致用戶數(shù)量下滑,反過(guò)來(lái)也影響應(yīng)用活躍度,甚至是收入。對(duì)開(kāi)發(fā)者來(lái)說(shuō),定期監(jiān)測(cè)并了解如何減少應(yīng)用程序的下載和安裝大小是一項(xiàng)重要的任務(wù)。
審核編輯 :李倩
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
795瀏覽量
41714 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3287瀏覽量
57803
原文標(biāo)題:Xcode棄用Bitcode,導(dǎo)致應(yīng)用體積大幅增加
文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論