首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  Apple

iOS 的 App 为啥体积都这么大了?

  •  1
     
  •   icylogic · 285 天前 via iPhone · 5768 次点击
    这是一个创建于 285 天前的主题,其中的信息可能已经有所发展或是发生改变。

    平时没注意容量问题,这几天换了新手机 restore 的时候感觉很慢,才发现现在 App 都 100 MB 起步了。这 …… PC 平台上也都算是比较大的应用了啊, 谁能解释下这体积膨胀主要是因为什么? 图标之类的 assets ? swift 本身或者 react 之类的技术带来的膨胀?

    V2erForiOS

    (图中体积是包含数据的,不过点进去可以看到应用本身体积也都是这个量级,淘宝京东 Dropbox 都是 奔着 200 MB 去了)

    这个基本不影响我使用,我目前还没遇到过不够用的情况,就是纯好奇。

    34 回复  |  直到 2019-02-10 12:45:03 +08:00
        1
    yukiww233   285 天前   ♥ 8
    之前某个版本美团的 app 都 600m 了,比完整的 win xp 镜像还要大一点
        2
    belin520   285 天前 via iPhone   ♥ 2
    @yukiww233 600m 大家没有概念,因为手机内存几十 G 起,你一跟一个系统比较,就形象了
    太可怕
        3
    xy90321   285 天前 via iPhone
    因为要包含各种设备用的不同分辨率的静态资源。
    另一方面也是因为快速开发的需求导致了设计和 review 水平的下降,重复的冗余模块增多。
        4
    ys0290   285 天前 via iPhone   ♥ 11
    就像之前一个帖子有人说的,因为存储空间大了,代码可以写的更垃圾了
        5
    ooppstef   285 天前
    一般都是老应用,多个迭代导致的.

    一方面,快速迭代中,垃圾资源没时间清理;另一方面,垃圾代码没人敢动,改错了 gg,改对了没人好,还怕你耽误工期;最后一方面,老需求也没人敢砍..你是 pm 你也不敢啊..

    最终就这样了.
        6
    misaka20   285 天前   ♥ 1
    1、首先使用 Swift 增加至少 10M
    2、不同的分辨率的资源比较大,bitcode 因为第三方库的原因,不能使用
    3、Assets 里面的很多图片,压缩优化一下,与正常的图片,相关比例特别大。我曾经只是 PNG 图片,优化无损压缩了下,项目节省了 50M 的空间。然后 Assets 的图片总大小,才 30M 不到。这是一般公司的项目是会出现的问题,但是大公司我感觉这种问题应该不存在。
    4、代码冗余其余占不了多少空间
    目前只想到这么多
        7
    CoCoMcRee   285 天前
    我晕。。。
        8
    CoCoMcRee   285 天前
    app 的体积是会计算 app 内容的。。。比如微信 app, 用的时间久了, 朋友聊天发的图片都会存在 app 沙盒内, 所以计算体积时也会算进去。 现在大多数 app 都会有清理缓存 清理 app 之类的功能。 跟代码没关系啦
        9
    Kyle18Tang   285 天前 via Android
    @CoCoMcRee 你看到楼主括号里的内容了吗?
        10
    adminsam   285 天前 via Android
    @CoCoMcRee 搞清楚别人在讨论什么然后再晕也不迟
        11
    CRight   285 天前 via iPhone
    苹果自家的应用也是这样,像 iMovie 和三件套这些一个个都挺大,甚至大过微软家的三件套
        12
    nathanw   285 天前 via iPhone
    其实还是苹果的问题
        13
    CastleBUPT   285 天前 via iPhone
    这题还是由开发者回答吧。因为没有缩减 app 体积的 kpi
        14
    edinina   285 天前
    其实就是臃肿,好多没必要的内容
        15
    lawler   285 天前
    有几个人不是越长越胖呢?
        16
    uuair   285 天前
    硬件跟上,软件倒逼硬件升级,是这个理论吧。
        17
    l12ab   285 天前 via iPhone   ♥ 1
    app store 的更新里显示的大小是 universal 的大小,详情页显示的是对应你手机版本和系统的大小。
    设置里的 storage 大小,是 ipa 解压安装之后的大小。
    我觉得引用第三方库导致体积增大了很多,因为很多库里面包含了很多无用代码和资源文件
        18
    xjbeta   285 天前
    macOS 版网易云音乐 单独一个.app 文件 14MB.....
        19
    yikuo   285 天前 via Android
    同样是空白工程,iOS 打包出来就比 Android 大很多,所以应该跟产品迭代还要图片没关系。
        20
    Wicked   285 天前
    硬件性能和存储空间溢出,加上开发周期缩短,导致执行效率和空间效率的优化越来越不受重视了
        21
    cyn   284 天前 via Android
    空间换时间?
        22
    lrigi   283 天前 via iPhone
    炉石传说 3.87G
    我更好奇这个....全是高清的图片动画和音频嘛
        23
    Admstor   283 天前
    炉石基本是图包
    PC 版也大有限一点而已

    现在移动应用大部分就是越来越垃圾
        24
    zmlu   282 天前
    王者荣耀顶一个 win10,半个 LOL
        25
    icylogic   282 天前 via iPhone
    @zmlu 我觉得以游戏的素材量还是可以理解的 ……
        26
    lizhuoli   281 天前 via iPhone   ♥ 1
    我是 iOS RD 究其原因,看你列举的这些应用,可以说明一下原因:

    1. Swift 库,在 iOS 11 设备上,会增加 12MB 左右,原因是 Swift ABI 没有固定,版本不兼容,因此系统没有内置 Swift runtime(libswift.dylib),每个 App 单独拷贝了一份在 App 版包中。而古老的 OC 运行时 libobjc 从 iOS 1 就开始内置。

    2. 大量跨端解决方案的引入,如 React Native,增量 8MB ; Flutter,增量 28MB。之所以引入越来越多跨端解决方案,而不是继续使用原生 SDK,是因为随着移动开发领域幕落西山,RD 开发相对逐年增高,两个团队使用完全不同的技术栈,开发相同的功能和 UI,已经跟不上 PM 的需求进度,必然采取的妥协方案。如果移动端有前端这样数量的开发者,这个问题不会凸显出来。

    3. 社交系列 App 大量使用短视频,直播应用,由于为了兼容性和最大程度的泛娱乐定制,大部分这类 App 都会引入 FFMpeg Lua OpenGL Protobuf 等各种解决方案,一套短视频集成可能会增大包大小 40MB,你说不要? KPI 不答应

    4. 快速迭代导致的代码冗余和资源冗余。在 iOS 上,本来有 App Thining 这一杀器,你实际下载的 App 包大小,只包含了你当前设备的体系结构(armv7 arm64),资源只包含了你的设备逻辑分辨率(2x/3x),多余资源不会下载。然而由于业务迭代速度,大量冗余资源被遗忘在包里,同时跨端方案无法利用 AppThingning,导致包大小增大。一些功能类似的三方库也会打包多份,是因为开发时间紧,没有时间去写一个适配层,新写的功能用新库,旧的也不能删
        27
    lizhuoli   281 天前 via iPhone   ♥ 1
    再者,我看你的国产 App,都包含了春节活动,这种活动一般需要大量资源(图片,音频,视频),以头条的发财中国年活动举例子,一个 SDK 集成,包大小增大 40MB,其中 36MB 属于资源的大小,可见包大小确实有这么大。之所以不使用全在线下载,是因为这类活动都有及时性,拉新性的目的,一旦需要在线下载整体转换率会下降很多,因此大都内置了资源包。等活动风波过去,大部分国产 App 的包大小应该会降低下来
        28
    lizhuoli   281 天前 via iPhone
    另外,100MB 在 PC 平台上都属于大应用,这一点也是不对的。如果你是 Windows 平台的话,你看到的 exe 安装包大小,都是经过超高压缩得到的,解压后的大小远远超过 100MB。如桌面 QQ 应该已经超过 500MB,这还是在桌面平台允许动态下发代码(动态链接库)的情况下,随着使用会越来越增加。

    如果是 macOS 平台,QQ 虽然比起 Windows 平台精简了太多无用功能,在 Mac App Store 的大小也有 200+,一些简单的基于 Electron 的应用如虾米音乐,都有上百,这个 100MB 可能是几年前的平均水平,但不可能是现在的平均包大小
        29
    crystone   281 天前
    @lizhuoli 这个风波是过不去了,春节结束,马上要 214 了,马上要**了……
        30
    Rh1   281 天前 via iPhone
    别的不太懂,通过相册我看出了楼主大概是个单身
        31
    xjbeta   281 天前
    @lizhuoli electron 是因为 electron 一个框架就有 100M 类似的还有 qtweb 啥啥啥的一个框架
    刨掉框架 大部分 electron 应用 本体并不是很大
        32
    sobigfish   281 天前
    @Rh1 #29 你知道的太多了
        33
    qio   279 天前 via iPhone
    @ys0290 真相
        34
    F2Sky   278 天前
    应用朝着大而全发展,功能越来越多。
    没有动力去精简优化。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2163 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 15:27 · PVG 23:27 · LAX 07:27 · JFK 10:27
    ♥ Do have faith in what you're doing.