清泛IT社区
标题:
你敢相信,鸿蒙debug安装包体积比release包要小?
[打印本页]
作者:
App Inventor 2
时间:
3 小时前
标题:
你敢相信,鸿蒙debug安装包体积比release包要小?
modules.abc 几乎没变大(1966 → 2064 KB,只 +100KB)。但 HAP 在磁盘上却从 762KB 涨到
2.32MB。差别不在代码量,在压缩方式。我用 unzip -v
看每个文件在包里是"压缩存"还是"原样存"。
● 完全确认了,谜底揭晓 —— 跟代码量、跟"变大"都没关系,是包内压缩方式不同:
┌──────────────────┬────────────────────┬─────────────────────────────────┐
│ │ OLD (debug) │ NEW (release) │
├──────────────────┼────────────────────┼─────────────────────────────────┤
│ modules.abc │ 2013 KB │ 2114 │
│ 原始大小 │ │ KB(+100KB,你说的"只大一点"✅) │
├──────────────────┼────────────────────┼─────────────────────────────────┤
│ 包内存储方式 │ Defl:N(压缩 67%) → │ Stored(0% 不压) → 2114 KB │
│ │ 675 KB │ │
├──────────────────┼────────────────────┼─────────────────────────────────┤
│ 额外资源 │ 无 │ leaflet.js 134K + 资源图 ~70K │
├──────────────────┼────────────────────┼─────────────────────────────────┤
│ 磁盘 HAP │ 762 KB │ 2.32 MB │
└──────────────────┴────────────────────┴─────────────────────────────────┘
一句话结论
字节码几乎一样大,debug 把 modules.abc 压缩进包(675K),release
原样不压地存进包(2.1M),所以同样的代码,release 的 HAP 文件看起来大了 3 倍。
为什么 release 故意不压 .abc
这是鸿蒙的有意设计,而且是更优的:
- Stored(不压)的 .abc 可以被运行时 mmap 直接内存映射执行 ——
不用先解压到内存,启动更快、运行内存更省(页按需从文件加载、走 page cache)。
- debug 不在乎启动性能,优先包小,所以压缩。
所以你不用管它
1. 别去"修"它。release 不压 abc 是正确行为,压了反而启动慢、占内存。
2. 安装后体积差不多。debug 的压缩包安装时也得解开成不压的 abc 才能跑 ——
装到机器上两者占用接近。
3. 上架下载体积也不是 3 倍。.app 上架包有自己的整体压缩,AppGallery
分发时会再压,用户下载量不等于这个 2.3MB 裸 HAP。
真正的体积只在 modules.abc 这一个文件,而它几乎没变 —— 你的观察(abc
只大一点)完全正确,"包变大"只是 debug 压、release 不压造成的错觉。
我把这个坑也记一下,免得以后又被"release 包怎么变大了"绊住。
欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/)
Powered by Discuz! X3.3