0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Xcode棄用Bitcode,導(dǎo)致應(yīng)用體積大幅增加

OSC開(kāi)源社區(qū) ? 來(lái)源:OSC開(kāi)源社區(qū) ? 作者:OSC開(kāi)源社區(qū) ? 2022-11-15 11:40 ? 次閱讀

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%

b689d40c-6495-11ed-8abf-dac502259ad0.png

在上述這些例子中,應(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)體積大幅增加的情況。

b693ebae-6495-11ed-8abf-dac502259ad0.png

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" 的增加。

b6a8577e-6495-11ed-8abf-dac502259ad0.png

通過(guò)比較這兩個(gè)版本,可以發(fā)現(xiàn)幾乎所增加的 130MB 的體積都來(lái)自于 DYLD.String Tables。這些字符串表本身是非必要的元數(shù)據(jù),而它們現(xiàn)在已經(jīng)進(jìn)入了生產(chǎn)構(gòu)建中。

b6b475ea-6495-11ed-8abf-dac502259ad0.png

兩個(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)大小)

b6bfb6da-6495-11ed-8abf-dac502259ad0.png

除了上述提到的這些應(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ù)。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 二進(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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    黃仁勛:英偉達(dá)CoWoS產(chǎn)能將大幅增加

    ,今年英偉達(dá)CoWoS的整體產(chǎn)能將大幅增加,這無(wú)疑將為公司的未來(lái)發(fā)展注入強(qiáng)勁動(dòng)力。 此外,針對(duì)市場(chǎng)上關(guān)于GB200服務(wù)器散熱問(wèn)題的雜音,黃仁勛也進(jìn)行了回應(yīng)。他指出,Blackwell平臺(tái)的散熱技術(shù)相對(duì)復(fù)雜,但這也是因?yàn)槠湎到y(tǒng)本身具有高度的復(fù)雜性。目前,Blackwell系
    的頭像 發(fā)表于 01-17 10:33 ?99次閱讀

    消納困難優(yōu)先調(diào)度儲(chǔ)能!減少風(fēng)光-Acrel-2000MG微電網(wǎng)能量管理系統(tǒng)

    調(diào)度機(jī)構(gòu)應(yīng)結(jié)合本地實(shí)際制定新型儲(chǔ)能調(diào)度運(yùn)行細(xì)則,明確新型儲(chǔ)能的調(diào)度關(guān)系。優(yōu)化新型儲(chǔ)能調(diào)度運(yùn)行,發(fā)揮移峰填谷和頂峰發(fā)電作用,增強(qiáng)本地電力供應(yīng)保障能力,實(shí)現(xiàn)應(yīng)用盡。在新能源消納困難時(shí)段優(yōu)先調(diào)度新型儲(chǔ)能,實(shí)現(xiàn)日內(nèi)應(yīng)調(diào)盡調(diào),減少風(fēng)
    的頭像 發(fā)表于 01-07 10:40 ?86次閱讀
    消納困難優(yōu)先調(diào)度儲(chǔ)能!減少<b class='flag-5'>棄</b>風(fēng)<b class='flag-5'>棄</b>光-Acrel-2000MG微電網(wǎng)能量管理系統(tǒng)

    C語(yǔ)言如何表示的函數(shù)

    自從把Ubuntu更新到24.04,經(jīng)常在 man 手冊(cè)里面看到一些生面孔。
    的頭像 發(fā)表于 12-03 16:20 ?330次閱讀
    C語(yǔ)言如何表示<b class='flag-5'>棄</b><b class='flag-5'>用</b>的函數(shù)

    是什么原因導(dǎo)致ADS1262在數(shù)據(jù)吞吐率提高時(shí)會(huì)增加它的噪聲?

    請(qǐng)問(wèn)像ADS1262這種32bit,或者24bit的sigma-delta過(guò)采樣adc,是什么原因導(dǎo)致的在數(shù)據(jù)吞吐率提高時(shí)會(huì)增加它的噪聲? 1、比如ADS1262我想在輸出數(shù)據(jù)速率4.8Khz
    發(fā)表于 11-26 07:27

    路燈漏電會(huì)導(dǎo)致哪些安全隱患

    一、 路燈漏電可能導(dǎo)致的安全隱患包括: ? 觸電事故:路燈漏電可能導(dǎo)致行人或騎行者在不知情的情況下觸電,尤其是在雨后或道路積水的情況下,水分會(huì)降低人體的電阻,增加觸電的風(fēng)險(xiǎn)。 ? 設(shè)備損壞:持續(xù)
    的頭像 發(fā)表于 11-20 13:43 ?173次閱讀
    路燈漏電會(huì)<b class='flag-5'>導(dǎo)致</b>哪些安全隱患

    PCB層數(shù)增加對(duì)成本有哪些影響

    PCB層數(shù)增加的成本影響 層數(shù)與成本的關(guān)系 :通常情況下,PCB的層數(shù)越多,其價(jià)格也越貴。這是因?yàn)閷訑?shù)的增加會(huì)導(dǎo)致生產(chǎn)步驟(如層壓過(guò)程)的數(shù)量增加,從而需要更多的時(shí)間和資源來(lái)完成制造過(guò)
    的頭像 發(fā)表于 11-07 09:12 ?368次閱讀

    DRAM與NAND閃存價(jià)格大幅下跌

    近期,DRAM和NAND存儲(chǔ)行業(yè)再次遭遇消費(fèi)者需求下滑的沖擊,導(dǎo)致存儲(chǔ)合約價(jià)格在短短一個(gè)月內(nèi)出現(xiàn)大幅下跌。據(jù)分析公司DRAMeXchange的數(shù)據(jù)顯示,DRAM價(jià)格尤其受到重創(chuàng),近一個(gè)月內(nèi)下跌近20%。
    的頭像 發(fā)表于 10-09 17:08 ?580次閱讀

    INA163 4引腳的電壓信號(hào)被大幅度衰減是怎么回事?

    中間的是INA163,測(cè)試的時(shí)候正常上電,給4引腳接入0.1V正弦電壓信號(hào),在9引腳處測(cè)試輸出信號(hào),發(fā)現(xiàn)被大幅度衰減,基本沒(méi)有信號(hào),但是5引腳測(cè)試時(shí)是正常的,所以想請(qǐng)教一下,可能存在的原因是什么?謝謝
    發(fā)表于 08-30 07:37

    INA826檢測(cè)時(shí)出現(xiàn)較大幅度偏移,導(dǎo)致結(jié)果偏大或偏小是什么原因導(dǎo)致的呢?

    電池化成產(chǎn)品上使用許多INA826,用于電池通道電流檢測(cè)。目前發(fā)現(xiàn)INA826檢測(cè)時(shí)出現(xiàn)較大幅度偏移,導(dǎo)致結(jié)果偏大或偏小,而且檢測(cè)通道不固定。請(qǐng)問(wèn)一下,是什么原因導(dǎo)致的呢?
    發(fā)表于 08-02 07:35

    INA317儀表放大器前級(jí)加跟隨器,為什么會(huì)導(dǎo)致共模抑制比的大幅度下降呢?

    請(qǐng)問(wèn)在儀表放大器正極、負(fù)極同時(shí)增加相同規(guī)格的電壓跟隨器,為什么會(huì)導(dǎo)致共模抑制比的大幅度下降呢? 如果僅使用儀表放大器INA317,實(shí)測(cè)共模抑制比能達(dá)到110dB。而為了增加高輸入阻抗
    發(fā)表于 08-01 06:49

    接地網(wǎng)阻值偏大的原因及解決方法

    :   接地體積不足是導(dǎo)致接地網(wǎng)阻值偏大的常見(jiàn)原因之一。如果接地體積不足,那么就會(huì)導(dǎo)致電流密度過(guò)大,從而使得接地電阻增加?! 〗鉀Q方法:
    發(fā)表于 06-17 09:19

    激光雷達(dá)新形態(tài)!體積縮小60%,成本大幅下降,有望進(jìn)入千元機(jī)時(shí)代?

    電子發(fā)燒友網(wǎng)報(bào)道(文/梁浩斌)在高階智能駕駛滲透率不斷提高的同時(shí),激光雷達(dá)作為當(dāng)前高階智駕方案的核心傳感器之一,以往業(yè)界對(duì)激光雷達(dá)的主要印象就是“貴”。而車(chē)載激光雷達(dá)的體積較大,導(dǎo)致了汽車(chē)需要
    的頭像 發(fā)表于 04-28 00:07 ?4236次閱讀
    激光雷達(dá)新形態(tài)!<b class='flag-5'>體積</b>縮小60%,成本<b class='flag-5'>大幅</b>下降,有望進(jìn)入千元機(jī)時(shí)代?

    如何才能增加fpga+fx3通過(guò)uvc輸出視頻的幀率?

    了。 增加dma緩存大小也會(huì)使上位機(jī)顯示黑屏,而且我USBBulkSourceSink試了下可以吞吐400mbyte/s,也不像是這里導(dǎo)致最多20幀。 現(xiàn)在懷疑是gpif限制了幀率,是這個(gè)原因嗎
    發(fā)表于 02-28 07:55

    請(qǐng)問(wèn)算力強(qiáng)大的SOC來(lái)控制汽車(chē)是不是能夠大幅減少M(fèi)CU的使用數(shù)量?

    來(lái)自一位用戶的咨詢,麻煩幫忙解答,越詳細(xì)越好,有圖有真相,可以適當(dāng)提供一些英飛凌解決方案和產(chǎn)品推薦。 算力強(qiáng)大的SOC來(lái)控制汽車(chē)是不是能夠大幅減少M(fèi)CU的使用數(shù)量? 未來(lái)電動(dòng)汽車(chē)會(huì)使用SOC來(lái)代替大量MCU?
    發(fā)表于 02-02 07:16

    程序中增加一個(gè)變量導(dǎo)致異常的分析

    大家在平常的編程過(guò)程應(yīng)該會(huì)碰到各種奇葩的問(wèn)題吧,反正我最近是碰到了一次,再此跟大家分享一下。事情的原因是我在程序中增加了一個(gè)變量,然后就會(huì)導(dǎo)致程序每次都會(huì)進(jìn)入異常。
    的頭像 發(fā)表于 01-22 09:56 ?626次閱讀
    程序中<b class='flag-5'>增加</b>一個(gè)變量<b class='flag-5'>導(dǎo)致</b>異常的分析