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

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

  •  1
     
  •   icylogic · 2019-02-03 11:05:47 +08:00 via iPhone · 9295 次点击
    这是一个创建于 2122 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    V2erForiOS

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

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

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

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

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

    现在移动应用大部分就是越来越垃圾
    zmlu
        24
    zmlu  
       2019-02-06 19:59:42 +08:00
    王者荣耀顶一个 win10,半个 LOL
    icylogic
        25
    icylogic  
    OP
       2019-02-06 20:55:23 +08:00 via iPhone
    @zmlu 我觉得以游戏的素材量还是可以理解的 ……
    lizhuoli
        26
    lizhuoli  
       2019-02-07 09:17:39 +08:00 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,导致包大小增大。一些功能类似的三方库也会打包多份,是因为开发时间紧,没有时间去写一个适配层,新写的功能用新库,旧的也不能删
    lizhuoli
        27
    lizhuoli  
       2019-02-07 09:22:28 +08:00 via iPhone   ❤️ 1
    再者,我看你的国产 App,都包含了春节活动,这种活动一般需要大量资源(图片,音频,视频),以头条的发财中国年活动举例子,一个 SDK 集成,包大小增大 40MB,其中 36MB 属于资源的大小,可见包大小确实有这么大。之所以不使用全在线下载,是因为这类活动都有及时性,拉新性的目的,一旦需要在线下载整体转换率会下降很多,因此大都内置了资源包。等活动风波过去,大部分国产 App 的包大小应该会降低下来
    lizhuoli
        28
    lizhuoli  
       2019-02-07 09:37:16 +08:00 via iPhone
    另外,100MB 在 PC 平台上都属于大应用,这一点也是不对的。如果你是 Windows 平台的话,你看到的 exe 安装包大小,都是经过超高压缩得到的,解压后的大小远远超过 100MB。如桌面 QQ 应该已经超过 500MB,这还是在桌面平台允许动态下发代码(动态链接库)的情况下,随着使用会越来越增加。

    如果是 macOS 平台,QQ 虽然比起 Windows 平台精简了太多无用功能,在 Mac App Store 的大小也有 200+,一些简单的基于 Electron 的应用如虾米音乐,都有上百,这个 100MB 可能是几年前的平均水平,但不可能是现在的平均包大小
    crystone
        29
    crystone  
       2019-02-07 09:57:14 +08:00
    @lizhuoli 这个风波是过不去了,春节结束,马上要 214 了,马上要**了……
    Rh1
        30
    Rh1  
       2019-02-07 13:08:50 +08:00 via iPhone
    别的不太懂,通过相册我看出了楼主大概是个单身
    xjbeta
        31
    xjbeta  
       2019-02-07 13:45:10 +08:00
    @lizhuoli electron 是因为 electron 一个框架就有 100M 类似的还有 qtweb 啥啥啥的一个框架
    刨掉框架 大部分 electron 应用 本体并不是很大
    sobigfish
        32
    sobigfish  
       2019-02-07 14:52:04 +08:00
    @Rh1 #29 你知道的太多了
    qio
        33
    qio  
       2019-02-09 14:41:53 +08:00 via iPhone
    @ys0290 真相
    F2Sky
        34
    F2Sky  
       2019-02-10 12:45:03 +08:00
    应用朝着大而全发展,功能越来越多。
    没有动力去精简优化。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1079 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 19:46 · PVG 03:46 · LAX 11:46 · JFK 14:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.