找回密码
 立即注册
搜索
查看: 3646|回复: 8

[软件] Xcode 弃用 Bitcode,导致应用体积大幅增加

[复制链接]
     
发表于 2022-11-24 09:40 | 显示全部楼层 |阅读模式
出品 | OSC开源社区(ID:oschina2013)
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%

在上述这些例子中,应用空间占用突然增大都是由于这些应用程序首次使用了 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 的应用程序都不再会从其生产的应用程序中剥离二进制符号了,这意味着一个应用程序可以在不增加任何功能的情况下出现体积大幅增加的情况。
Emerge 深度分析了耐克的 iOS 端应用程序,在 22.35.0 版本中,框架在 191.7MB 的安装大小中占了 163.7MB。而到了 22.36.1 版本,框架在 322.1MB 的总容量中激增到 293.8MB。 注意在每个框架中发现的深蓝色的 "String Table" 的增加。
通过比较这两个版本,可以发现几乎所增加的 130MB 的体积都来自于 DYLD.String Tables。这些字符串表本身是非必要的元数据,而它们现在已经进入了生产构建中。
两个版本应用程序的二进制符号也从 213.9KB (占应用程序总大小的 0.11%)增长到了 127.5 MB(占应用程序总大小的 40%)。也就是说耐克 iOS 应用程序在没有任何重大功能变化的同时,增加了 130MB。(上图:Xcode 14 之前的二进制符号大小;下图:Xcode 14 之后中的二进制符号大小)
除了上述提到的这些应用,此次体积大幅增加的还包括了 Chrome、Amazon、Twitter、Twitch、ESPN 等常用的软件。
应用程序的大小是影响你的应用程序的安装和卸载指标的最大因素之一,过于臃肿会降低应用安装率和提升卸载率,尤其是对于手机空间比较有限的用户来说更加如此,最终会导致用户数量下滑,反过来也影响应用活跃度,甚至是收入。对开发者来说,定期监测并了解如何减少应用程序的下载和安装大小是一项重要的任务。

回复

使用道具 举报

头像被屏蔽
     
发表于 2022-11-24 10:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-11-24 11:01 | 显示全部楼层
国内app根本不在乎,虚幻引擎直接内置
回复

使用道具 举报

头像被屏蔽
发表于 2022-11-24 11:14 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-11-24 11:59 | 显示全部楼层
现在苹果x86和powerPC架构都没了,全是arm架构,Bitcode没有存在的必要。
加剧iOS、iPad OS以及mac OS融合,形成更强的内循环闭圈软件生态才是目的,
大幅增加应用体积显然不是弃用Bitcode的原因。
从方向上来说,没什么问题。
回复

使用道具 举报

     
发表于 2022-11-24 12:01 | 显示全部楼层
不增大空间占用还怎么逼着用户掏钱买大容量的手机?
回复

使用道具 举报

发表于 2022-11-25 00:22 来自手机 | 显示全部楼层
安卓啥时候弃用proguard

—— 来自 HUAWEI LYA-AL00, Android 10上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-11-25 00:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-11-25 17:20 | 显示全部楼层
oskneo 发表于 2022-11-25 00:22
安卓啥时候弃用proguard

—— 来自 HUAWEI LYA-AL00, Android 10上的 S1Next-鹅版 v2.5.4

本身apk就很容易传播  如果不混淆  不就和前端一样底裤都漏给人家了吗

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-22 03:44 , Processed in 0.047259 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表