平时没注意容量问题,这几天换了新手机 restore 的时候感觉很慢,才发现现在 App 都 100 MB 起步了。这 …… PC 平台上也都算是比较大的应用了啊, 谁能解释下这体积膨胀主要是因为什么? 图标之类的 assets ? swift 本身或者 react 之类的技术带来的膨胀?
(图中体积是包含数据的,不过点进去可以看到应用本身体积也都是这个量级,淘宝京东 Dropbox 都是 奔着 200 MB 去了)
这个基本不影响我使用,我目前还没遇到过不够用的情况,就是纯好奇。
1
yukiww233 2019-02-03 11:23:15 +08:00 8
之前某个版本美团的 app 都 600m 了,比完整的 win xp 镜像还要大一点
|
2
belin520 2019-02-03 11:27:31 +08:00 via iPhone 2
@yukiww233 600m 大家没有概念,因为手机内存几十 G 起,你一跟一个系统比较,就形象了
太可怕 |
3
xy90321 2019-02-03 11:32:08 +08:00 via iPhone
因为要包含各种设备用的不同分辨率的静态资源。
另一方面也是因为快速开发的需求导致了设计和 review 水平的下降,重复的冗余模块增多。 |
4
ys0290 2019-02-03 11:35:37 +08:00 via iPhone 12
就像之前一个帖子有人说的,因为存储空间大了,代码可以写的更垃圾了
|
5
ooppstef 2019-02-03 11:39:32 +08:00
一般都是老应用,多个迭代导致的.
一方面,快速迭代中,垃圾资源没时间清理;另一方面,垃圾代码没人敢动,改错了 gg,改对了没人好,还怕你耽误工期;最后一方面,老需求也没人敢砍..你是 pm 你也不敢啊.. 最终就这样了. |
6
misaka20 2019-02-03 11:39:52 +08:00 1
1、首先使用 Swift 增加至少 10M
2、不同的分辨率的资源比较大,bitcode 因为第三方库的原因,不能使用 3、Assets 里面的很多图片,压缩优化一下,与正常的图片,相关比例特别大。我曾经只是 PNG 图片,优化无损压缩了下,项目节省了 50M 的空间。然后 Assets 的图片总大小,才 30M 不到。这是一般公司的项目是会出现的问题,但是大公司我感觉这种问题应该不存在。 4、代码冗余其余占不了多少空间 目前只想到这么多 |
7
CoCoMcRee 2019-02-03 11:49:44 +08:00
我晕。。。
|
8
CoCoMcRee 2019-02-03 11:51:29 +08:00
app 的体积是会计算 app 内容的。。。比如微信 app, 用的时间久了, 朋友聊天发的图片都会存在 app 沙盒内, 所以计算体积时也会算进去。 现在大多数 app 都会有清理缓存 清理 app 之类的功能。 跟代码没关系啦
|
9
Kyle18Tang 2019-02-03 12:02:31 +08:00 via Android
@CoCoMcRee 你看到楼主括号里的内容了吗?
|
11
CRight 2019-02-03 12:14:08 +08:00 via iPhone
苹果自家的应用也是这样,像 iMovie 和三件套这些一个个都挺大,甚至大过微软家的三件套
|
12
nathanw 2019-02-03 12:18:29 +08:00 via iPhone
其实还是苹果的问题
|
13
CastleBUPT 2019-02-03 12:21:18 +08:00 via iPhone
这题还是由开发者回答吧。因为没有缩减 app 体积的 kpi
|
14
edinina 2019-02-03 12:28:57 +08:00
其实就是臃肿,好多没必要的内容
|
15
lawler 2019-02-03 12:49:36 +08:00
有几个人不是越长越胖呢?
|
16
uuair 2019-02-03 13:29:38 +08:00
硬件跟上,软件倒逼硬件升级,是这个理论吧。
|
17
l12ab 2019-02-03 13:48:27 +08:00 via iPhone 1
app store 的更新里显示的大小是 universal 的大小,详情页显示的是对应你手机版本和系统的大小。
设置里的 storage 大小,是 ipa 解压安装之后的大小。 我觉得引用第三方库导致体积增大了很多,因为很多库里面包含了很多无用代码和资源文件 |
19
yikuo 2019-02-03 20:14:44 +08:00 via Android
同样是空白工程,iOS 打包出来就比 Android 大很多,所以应该跟产品迭代还要图片没关系。
|
20
Wicked 2019-02-03 20:41:22 +08:00
硬件性能和存储空间溢出,加上开发周期缩短,导致执行效率和空间效率的优化越来越不受重视了
|
21
cyn 2019-02-04 02:42:49 +08:00 via Android
空间换时间?
|
22
lrigi 2019-02-05 00:48:01 +08:00 via iPhone
炉石传说 3.87G
我更好奇这个....全是高清的图片动画和音频嘛 |
23
Admstor 2019-02-05 22:44:15 +08:00
炉石基本是图包
PC 版也大有限一点而已 现在移动应用大部分就是越来越垃圾 |
24
zmlu 2019-02-06 19:59:42 +08:00
王者荣耀顶一个 win10,半个 LOL
|
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,导致包大小增大。一些功能类似的三方库也会打包多份,是因为开发时间紧,没有时间去写一个适配层,新写的功能用新库,旧的也不能删 |
27
lizhuoli 2019-02-07 09:22:28 +08:00 via iPhone 1
再者,我看你的国产 App,都包含了春节活动,这种活动一般需要大量资源(图片,音频,视频),以头条的发财中国年活动举例子,一个 SDK 集成,包大小增大 40MB,其中 36MB 属于资源的大小,可见包大小确实有这么大。之所以不使用全在线下载,是因为这类活动都有及时性,拉新性的目的,一旦需要在线下载整体转换率会下降很多,因此大都内置了资源包。等活动风波过去,大部分国产 App 的包大小应该会降低下来
|
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 可能是几年前的平均水平,但不可能是现在的平均包大小 |
30
Rh1 2019-02-07 13:08:50 +08:00 via iPhone
别的不太懂,通过相册我看出了楼主大概是个单身
|
31
xjbeta 2019-02-07 13:45:10 +08:00
@lizhuoli electron 是因为 electron 一个框架就有 100M 类似的还有 qtweb 啥啥啥的一个框架
刨掉框架 大部分 electron 应用 本体并不是很大 |
34
F2Sky 2019-02-10 12:45:03 +08:00
应用朝着大而全发展,功能越来越多。
没有动力去精简优化。 |