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

    浏览量

    42799
  • 应用程序
    +关注

    关注

    38

    文章

    3342

    浏览量

    59926

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    请问TapLinx IOS SDK与Xcode 16不兼容吗?

    /taplinxlibrary.swiftmodule/arm64-apple-ios.swiftmodule 您能否确认与 Xcode 16 的兼容性?
    发表于 04-02 06:19

    在橡胶体积表面电阻率测试过程中,电磁干扰对测试结果的影响,如何有效屏蔽

    的负面影响,使测量的电流出现波动,最终导致测试得到的电阻值偏离真实值。在强电磁干扰环境下,测试结果可能会出现大幅度的偏差,根本无法准确反映橡胶的电学性能,这对于依赖测试结果进行产品研发、质量把控的橡胶行业而言,
    的头像 发表于 03-13 13:14 632次阅读
    在橡胶<b class='flag-5'>体积</b>表面电阻率测试过程中,电磁干扰对测试结果的影响,如何有效屏蔽

    工业4.0时代:伺服轴增加推动连接器小型化趋势

    转变不仅带来了设备性能的大幅提升,更对连接器等关键组件提出了新的挑战与要求。 伺服驱动技术的引入,使得设备上的伺服轴数量显著增加。伺服轴作为设备运动控制的核心部件,其数量的增加直接导致
    的头像 发表于 02-08 15:31 526次阅读
    工业4.0时代:伺服轴<b class='flag-5'>增加</b>推动连接器小型化趋势

    黄仁勋:英伟达CoWoS产能将大幅增加

    ,今年英伟达CoWoS的整体产能将大幅增加,这无疑将为公司的未来发展注入强劲动力。 此外,针对市场上关于GB200服务器散热问题的杂音,黄仁勋也进行了回应。他指出,Blackwell平台的散热技术相对复杂,但这也是因为其系统本身具有高度的复杂性。目前,Blackwell系
    的头像 发表于 01-17 10:33 866次阅读

    体积电阻率和表面电阻率的区别

    定义不同:体积电阻率是指材料单位体积内的电阻值,通常用Ω·m表示;表面电阻率是指材料单位面积内的电阻值,通常用Ω表示。
    的头像 发表于 01-16 16:24 4108次阅读
    <b class='flag-5'>体积</b>电阻率和表面电阻率的区别

    技嘉于 CES 2025 首度亮相升级散热设计与精实体积的 NVIDIA GeForce RTX 50 系列显卡

    NVIDIA GeForce RTX™ 50 系列显示芯片设计的散热系统,可大幅提升高负载需求的游戏表现。以 "Evolution of Ten" 为设计概念,技嘉新系列显卡提升高达 10% 散热效率,并减少 10% 整体体积,提供高游戏性能及更轻松上手的 PC 组装体
    的头像 发表于 01-07 17:57 775次阅读

    消纳困难优先调度储能!减少光-Acrel-2000MG微电网能量管理系统

    调度机构应结合本地实际制定新型储能调度运行细则,明确新型储能的调度关系。优化新型储能调度运行,发挥移峰填谷和顶峰发电作用,增强本地电力供应保障能力,实现应用尽。在新能源消纳困难时段优先调度新型储能,实现日内应调尽调,减少
    的头像 发表于 01-07 10:40 726次阅读
    消纳困难优先调度储能!减少<b class='flag-5'>弃</b>风<b class='flag-5'>弃</b>光-Acrel-2000MG微电网能量管理系统

    谐波会导致设备发热吗?

    谐波会导致设备发热。谐波电流在设备中会产生额外的损耗,这些损耗会转化为热量,从而导致设备温度升高。具体来说,谐波电流在电机中会产生铁心损耗、绕组损耗以及附加损耗等,这些损耗会转化为热量,导致电机温度
    的头像 发表于 12-11 15:28 1132次阅读