0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Xcode弃用Bitcode,导致应用体积大幅增加

OSC开源社区 来源:OSC开源社区 作者:OSC开源社区 2022-11-15 11:40 次阅读

Emerge 是一个监测和减少应用程序大小的平台,可以持续监测并分析应用程序二进制大小,帮助开发者编写更小、更好的代码。近日 Emerge 发布了一份报告,显示最新版本的 Xcode 存在会无意中增加应用程序体积的问题。

Xcode 14 于今年 9 月份正式发布,新版本添加了对 Swift 5.7 的支持,并针对 macOS Ventura、iOS/iPadOS 16 等最新系统添加了 SDK,除此之外,新版本 Xcode 的速度更快、体积缩小了 30%、增加的并行性使得构建项目的速度提高了 25%,以及长时间运行测试的速度提高了 30%。

但在 Xcode 14 发布后不久,Emerge 发现一些 iOS 应用程序的体积则是出现了明显增加,其中从 9 月中旬到 10 月初之间,观测到:

耐克 iOS 应用程序的安装大小一开始仅为 182.2MB,之后变成了 322.1MB,空间占用增加了 76%

American Airlines(美国航空)从 182.2MB 增加到 389.1MB,增加了 113%

Chime 从 162.8MB 增加到 212.8MB,增加了 31%

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

在上述这些例子中,应用空间占用突然增大都是由于这些应用程序首次使用了 Xcode 14 构建,而归根结底,导致这个问题发生的原因就是 Xcode 14 默认禁用了 Bitcode。

Xcode 14 更新文档中写道:

Xcode 不再默认构建 Bitcode,在未来的 Xcode 版本中,使用 Bitcode 构建的功能将被移除。含有 Bitcode 的 IPA 将在提交给 App Store 之前被剥离 Bitcode。

什么是 Bitcode

Bitcode 是打包应用程序的一种方式,它可以在开发者把应用提交到 App Store 后,将部分构建过程留给苹果公司完成,苹果所做的事情之一是剥离二进制符号。

什么是二进制符号剥离

二进制符号剥离(Binary symbol stripping)是指从二进制文件中删除某些类型的元数据,这些元数据对于在生产中运行应用程序是非必要的。这些元数据在生产前可能是有帮助的,但之后只会让用户的手机变得更加臃肿。

简单的解释是,Bitcode 通过剥离二进制符号优化了生产构建。如果不打开 Bitcode,开发者就需要修改 Xcode 的构建设置,从而以其他方式剥离二进制符号。

也就是说,当开发者更新至 Xcode 14 之后,任何依赖 Bitcode 的应用程序都不再会从其生产的应用程序中剥离二进制符号了,这意味着一个应用程序可以在不增加任何功能的情况下出现体积大幅增加的情况。

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

Emerge 深度分析了耐克的 iOS 端应用程序,在 22.35.0 版本中,框架在 191.7MB 的安装大小中占了 163.7MB。而到了 22.36.1 版本,框架在 322.1MB 的总容量中激增到 293.8MB。注意在每个框架中发现的深蓝色的 "String Table" 的增加。

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

通过比较这两个版本,可以发现几乎所增加的 130MB 的体积都来自于 DYLD.String Tables。这些字符串表本身是非必要的元数据,而它们现在已经进入了生产构建中。

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

两个版本应用程序的二进制符号也从 213.9KB (占应用程序总大小的 0.11%)增长到了 127.5 MB(占应用程序总大小的 40%)。也就是说耐克 iOS 应用程序在没有任何重大功能变化的同时,增加了 130MB。(上图:Xcode 14 之前的二进制符号大小;下图:Xcode 14 之后中的二进制符号大小)

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

除了上述提到的这些应用,此次体积大幅增加的还包括了 Chrome、Amazon、Twitter、Twitch、ESPN 等常用的软件。

应用程序的大小是影响你的应用程序的安装和卸载指标的最大因素之一,过于臃肿会降低应用安装率和提升卸载率,尤其是对于手机空间比较有限的用户来说更加如此,最终会导致用户数量下滑,反过来也影响应用活跃度,甚至是收入。对开发者来说,定期监测并了解如何减少应用程序的下载和安装大小是一项重要的任务。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    793

    浏览量

    41597
  • 应用程序
    +关注

    关注

    37

    文章

    3240

    浏览量

    57599

原文标题:Xcode弃用Bitcode,导致应用体积大幅增加

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    路灯漏电会导致哪些安全隐患

    一、 路灯漏电可能导致的安全隐患包括:   触电事故:路灯漏电可能导致行人或骑行者在不知情的情况下触电,尤其是在雨后或道路积水的情况下,水分会降低人体的电阻,增加触电的风险。   设备损坏:持续
    的头像 发表于 11-20 13:43 54次阅读
    路灯漏电会<b class='flag-5'>导致</b>哪些安全隐患

    PCB层数增加对成本有哪些影响

    PCB层数增加的成本影响 层数与成本的关系 :通常情况下,PCB的层数越多,其价格也越贵。这是因为层数的增加导致生产步骤(如层压过程)的数量增加,从而需要更多的时间和资源来完成制造过
    的头像 发表于 11-07 09:12 200次阅读

    DRAM与NAND闪存价格大幅下跌

    近期,DRAM和NAND存储行业再次遭遇消费者需求下滑的冲击,导致存储合约价格在短短一个月内出现大幅下跌。据分析公司DRAMeXchange的数据显示,DRAM价格尤其受到重创,近一个月内下跌近20%。
    的头像 发表于 10-09 17:08 473次阅读

    INA163 4引脚的电压信号被大幅度衰减是怎么回事?

    中间的是INA163,测试的时候正常上电,给4引脚接入0.1V正弦电压信号,在9引脚处测试输出信号,发现被大幅度衰减,基本没有信号,但是5引脚测试时是正常的,所以想请教一下,可能存在的原因是什么?谢谢
    发表于 08-30 07:37

    INA826检测时出现较大幅度偏移,导致结果偏大或偏小是什么原因导致的呢?

    电池化成产品上使用许多INA826,用于电池通道电流检测。目前发现INA826检测时出现较大幅度偏移,导致结果偏大或偏小,而且检测通道不固定。请问一下,是什么原因导致的呢?
    发表于 08-02 07:35

    INA317仪表放大器前级加跟随器,为什么会导致共模抑制比的大幅度下降呢?

    请问在仪表放大器正极、负极同时增加相同规格的电压跟随器,为什么会导致共模抑制比的大幅度下降呢? 如果仅使用仪表放大器INA317,实测共模抑制比能达到110dB。而为了增加高输入阻抗
    发表于 08-01 06:49

    接地网阻值偏大的原因及解决方法

    :   接地体积不足是导致接地网阻值偏大的常见原因之一。如果接地体积不足,那么就会导致电流密度过大,从而使得接地电阻增加。  解决方法:
    发表于 06-17 09:19

    激光雷达新形态!体积缩小60%,成本大幅下降,有望进入千元机时代?

    电子发烧友网报道(文/梁浩斌)在高阶智能驾驶渗透率不断提高的同时,激光雷达作为当前高阶智驾方案的核心传感器之一,以往业界对激光雷达的主要印象就是“贵”。而车载激光雷达的体积较大,导致了汽车需要
    的头像 发表于 04-28 00:07 4071次阅读
    激光雷达新形态!<b class='flag-5'>体积</b>缩小60%,成本<b class='flag-5'>大幅</b>下降,有望进入千元机时代?

    如何才能增加fpga+fx3通过uvc输出视频的帧率?

    了。 增加dma缓存大小也会使上位机显示黑屏,而且我USBBulkSourceSink试了下可以吞吐400mbyte/s,也不像是这里导致最多20帧。 现在怀疑是gpif限制了帧率,是这个原因吗
    发表于 02-28 07:55

    请问算力强大的SOC来控制汽车是不是能够大幅减少MCU的使用数量?

    来自一位用户的咨询,麻烦帮忙解答,越详细越好,有图有真相,可以适当提供一些英飞凌解决方案和产品推荐。 算力强大的SOC来控制汽车是不是能够大幅减少MCU的使用数量? 未来电动汽车会使用SOC来代替大量MCU?
    发表于 02-02 07:16

    程序中增加一个变量导致异常的分析

    大家在平常的编程过程应该会碰到各种奇葩的问题吧,反正我最近是碰到了一次,再此跟大家分享一下。事情的原因是我在程序中增加了一个变量,然后就会导致程序每次都会进入异常。
    的头像 发表于 01-22 09:56 524次阅读
    程序中<b class='flag-5'>增加</b>一个变量<b class='flag-5'>导致</b>异常的分析

    LTM4625 comp FB管脚增加电容导致输出电压过大是什么原因?

    LTM4625电源芯片在COMP和FB管脚同时增加10nF电容,会导致FB电压升高到0.7V左右,导致输出电压增大,COMP和FB管脚,单独加电容电压正常,这是什么原因
    发表于 01-05 07:46

    传三星低阶手机将有3000万支LCD改采OLED

    2024年三星低阶手机将有3000万支LCD改采OLED,为三星首次在低阶手机以OLED机种试水温,上游供应链排除台厂,由韩系供应链赢者全拿,对低阶手机生态投下震撼弹。
    发表于 01-03 10:47 315次阅读

    IGBT漏电流增加有哪些原因

    正向电压,从而打开IGBT。然而,随着正向电压的增加,漏结区的P型区域扩大,导致漏电流增加。 温度的影响 :IGBT的工作温度对其漏电流也有显著影响。随着温度的升高,半导体材料的载流子饱和迁移率
    的头像 发表于 12-13 16:01 3910次阅读

    电压不够怎么增加电压?增加电压的方法有哪些?

    的方法来增加电压的方法。 1. 变压器升压 变压器是电力系统中常见的设备,可以将电能从一个电压等级转换到另一个电压等级,从而实现电压的升高或降低。升压变压器被广泛应用于电力系统中,通过将输入电压的级比增加,从而提
    的头像 发表于 12-12 14:09 1.6w次阅读