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

    文章

    809

    浏览量

    43201
  • 应用程序
    +关注

    关注

    38

    文章

    3346

    浏览量

    60421

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    相同性能与体积磁体:表磁为何不同?

    ‌。表磁(即表面磁场)受多种因素影响,即使磁体的材料牌号(如 N35、N42 等)和体积完全相同,以下关键变量仍会导致表磁差异: ü ‌形状与尺寸比例‌: 例如圆柱形磁体的高径比(H/D)、方形磁体的长宽高比例不同,会改变退磁场
    的头像 发表于 04-14 09:04 364次阅读
    相同性能与<b class='flag-5'>体积</b>磁体:表磁为何不同?

    光伏并网后必无功整改?根源与优化措施都在这里

    光伏并网导致工厂功率因数下降,力调电费大幅增加,核心在于无功补偿系统无法适应新负荷结构。
    的头像 发表于 04-06 12:26 3050次阅读
    光伏并网后必无功整改?根源与优化措施都在这里

    沿海港口高盐雾环境,CSD船变压器能长期稳定运行吗?

    沿海港口的高盐雾、高湿度环境,是船变压器的“天敌”——盐雾会腐蚀设备外壳和内部部件,高湿度会导致设备绝缘性能下降,容易出现短路、故障等问题,严重影响变压器的使用寿命,增加船东的维修和更换成本。很多
    的头像 发表于 03-11 00:00 907次阅读
    沿海港口高盐雾环境,CSD船<b class='flag-5'>用</b>变压器能长期稳定运行吗?

    TAIYO YUNDEN太阳诱电:汽车支持165℃多层型金属功率电感器增加了1608尺寸的产品阵容

    TAIYO YUNDEN太阳诱电:汽车支持165℃多层型金属功率电感器增加了1608尺寸的产品阵容
    的头像 发表于 01-16 13:50 320次阅读
    TAIYO YUNDEN太阳诱电:汽车<b class='flag-5'>用</b>支持165℃多层型金属功率电感器<b class='flag-5'>增加</b>了1608尺寸的产品阵容

    合粤车规贴片铝电解电容,小体积大能量,车载集成优选

    车规贴片铝电解电容凭借小体积、大能量、高可靠性及智能化设计,成为车载集成的优选元件,其核心优势与技术特性如下: 一、小体积与高能量密度:适应车载紧凑布局 体积缩小,容量提升 通过纳米级蚀刻铝箔技术
    的头像 发表于 12-26 15:44 329次阅读

    【转】告别容量与体积的妥协:永铭固态电容助力移动电源实现“小体积大容量”

    的容量-体积矛盾日益突出:增大容量往往以牺牲布局空间为代价,而缩小体积则可能导致滤波性能下降、系统稳定性受损。       这一痛点这个矛盾在高频、高功率密度、高纹波的快充、移动电源应用中尤为明显。 永铭解决方案与优势    
    的头像 发表于 12-10 14:38 617次阅读
    【转】告别容量与<b class='flag-5'>体积</b>的妥协:永铭固态电容助力移动电源实现“小<b class='flag-5'>体积</b>大容量”

    告别容量与体积的妥协:永铭固态电容助力移动电源实现“小体积大容量”

    容量往往以牺牲布局空间为代价,而缩小体积则可能导致滤波性能下降、系统稳定性受损。这一痛点这个矛盾在高频、高功率密度、高纹波的快充、移动电源应用中尤为明显。永铭解决
    的头像 发表于 11-27 10:18 862次阅读
    告别容量与<b class='flag-5'>体积</b>的妥协:永铭固态电容助力移动电源实现“小<b class='flag-5'>体积</b>大容量”

    体积合金电阻需求激增,深圳市顺海科技引领市场

    随着电子设备小型化趋势加速,小体积合金电阻市场前景广阔。深圳市顺海科技有限公司凭借其产品、研发、供应及服务优势,借助华年商城线上平台,有望在小体积合金电阻供应领域持续领先。未来,小体积合金电阻可能会在尺寸进一步缩小、性能
    的头像 发表于 11-25 17:17 1306次阅读
    小<b class='flag-5'>体积</b>合金电阻需求激增,深圳市顺海科技引领市场

    CW32L010的ADC采样值波动导致电机调速不平滑怎么解决?

    CW32L010的ADC采样值波动导致电机调速不平滑
    发表于 11-18 06:30

    CSD船变压器:为何能在盐雾环境中稳定运行?

    船舶靠港时,盐雾腐蚀让变压器频繁故障,您知道如何解决吗?海洋环境对电气设备提出了严峻挑战,特别是盐雾腐蚀问题。盐雾会渗透到变压器内部,破坏绝缘层,导致变压器故障率显著增加。在港口靠泊期间,变压器故障
    的头像 发表于 09-28 13:35 639次阅读
    CSD船<b class='flag-5'>用</b>变压器:为何能在盐雾环境中稳定运行?

    磁集成技术如何助力PCBA缩小体积

    过去,PCBA(印刷电路板组装)面临诸多痛点问题,尤其是在变压器、电感器的应用中,多个电感、变压器的应用使得体积较大,导致整个PCBA模块体积庞大,难以满足现代电子产品对小型化的要求。 此外,传统
    的头像 发表于 07-16 14:02 884次阅读
    磁集成技术如何助力PCBA缩小<b class='flag-5'>体积</b>?

    鸿蒙5开发宝藏案例分享---优化应用包体积大小问题

    ?** 鸿蒙包体积优化实战:藏在官方文档里的宝藏技巧!** 大家好呀~我是你们的鸿蒙开发小伙伴!今天在翻官方文档时,发现了一个超实用的「包体积优化」案例宝藏库!这些技巧明明能大幅提升应用体验,却很
    发表于 06-13 10:09

    Chiplet商业化将大幅增加网络威胁

    小芯片的商业化将大大增加硬件遭受攻击的可能性,这就需要在供应链的每个层面采取更广泛的安全措施和流程,包括从初始设计到产品报废的整个过程中的可追溯性。近年来,安全措施方面已取得了长足进步,包括从识别
    的头像 发表于 05-28 13:48 1017次阅读
    Chiplet商业化将<b class='flag-5'>大幅</b><b class='flag-5'>增加</b>网络威胁

    HarmonyOS优化应用包体积大小问题性能优化

    一、概述 减小应用包大小是提升应用下载和安装体验的重要方式。通过压缩、精简或者复用应用中的代码或资源,可以有效降低应用包体积大小,减少空间占用,从而达到提升应用下载和安装速度的目的。在了解如何优化包
    发表于 05-20 14:50

    汉威科技车传感器助力打造智能空气净化系统

    汽车,不只是交通工具,更是人们展现新式生活美学的“第三空间”。汽车空气质量已经成为人们的关注重点之一,车内气味问题很可能导致消费者选。
    的头像 发表于 05-20 10:19 925次阅读