最近换了个新安卓手机,发现一个现象
微信安装包 90M,安装完成后,在应用程序管理里看到微信的占用空间是 230M
其实为什么 90M 能安装出 230M 我也不是很明白,难道这里面有多层压缩?或者安装过程中创建了或者拷贝了很多有内容的文件?
当然还有更疑惑的
我不登录的情况下,占用一直是 230M。但是当我随便登录一个账号,哪怕是刚注册的账号之后,应用程序管理里微信的占用瞬间到了 580M。而且在手机的文件管理里确实是可以看到总存储空间是少了 300 多 M 的。
在短短的不超过 3 秒时间里,体积增加了 300 多 M,显然不是联网下载的。
我第一反应是去找这些文件,手机文件管理里一直没找到多出来的这 300M 的文件,后来网上查了才知道,应该是在根目录的 data 文件夹里(手机没 root 是看不到的)
那么问题来了:
1.微信是如何做到 230M 的体积登录后瞬间变成 580M 的,这里面做了什么,一直复制文件?解压文件?写文件?
2.这些文件是用来干嘛的,为什么需要这么大?
小弟对此真的很好奇,跪求安卓大佬们解答。。
(而且微信 app 里显示的微信占用空间只有 120M,实在是有点混淆视听。)
1
yangyn 2019-06-26 18:47:59 +08:00
同疑惑,坐等大佬解答
|
2
kaedea 2019-06-26 18:49:43 +08:00 via Android 1
AOT
|
3
bbq777aass 2019-06-26 19:04:07 +08:00 via Android
好问题,同坐等专家
|
4
yukiww233 2019-06-26 19:06:38 +08:00 3
第一次安装会解压出所有 so 和生成 oat 文件
第一次打开 vx 会解压出插件化的组件和各种乱七八糟的黑科技 |
6
yukiww233 2019-06-26 19:13:22 +08:00
@realfex #5 大部分是的。第一次打开大厂应用基本都会下载大量的 hotfix 和插件 /资源(目测几十 M 有的),至于是不是立刻 apply 就不知道了
|
7
lizhuoli 2019-06-26 19:14:52 +08:00 via iPhone
Android 是可以动态下发代码执行的,现在所谓的 5M apk,第一次启动后就开始下载插件,最后变成 200MB 很常见
iOS 从系统级别断掉了这个可能性,非系统的 entitlements 的 App,在 Data 段不允许执行代码,JIT 什么的都别想啦 |
8
zzsakurazz 2019-06-26 19:15:27 +08:00
可以安装后监控下流量监控
|
9
menyakun 2019-06-26 19:29:55 +08:00 2
1. 90M -> 230M: apk 是压缩格式,就是纯粹的解压。也就是 /data/app/com.tencent.mm/所占的空间
2. 230M -> 580M: AOT 后会生成一个文件,在 /data/dalvik-cache/arm/,初次之外大概还有微信自己初始化一些 sqlite 之类的文件预分配的大小 |
10
pursuer 2019-06-26 20:30:26 +08:00
微信有一个叫 tinker 的东西,热修复用的,安装后会解压到 data 里,然后优化成 oat 文件,这个 oat 之前我看到的时候有 150mb 左右吧。
|
11
antileech 2019-06-26 21:49:54 +08:00
230M 本身包含了 90M 的 apk,剩下的 140M 才是解压的 so 和生成的 oat 文件,90M->140M,没什么毛病啊
|
12
janus77 2019-06-26 23:20:20 +08:00
换了安卓手机?难道你以前用的 ios 手机不是几个 G 的数据? ios 是什么原因,安卓就是什么原因。
|
13
lucaslai 2019-06-27 08:55:36 +08:00
和 qq 一样安装包小用一用的就越长越大,不过 qq 会有一个“正在更新数据”的进度条,而微信没有。
|
14
Minson 2019-06-27 09:36:12 +08:00
安装软件就是解压的过程啊,安装好之后还要初始化,各种配置文件,数据库什么的。越用越大
|
15
MozzieW 2019-06-27 14:43:41 +08:00
启动后不知道, 安装后变大这个是 Androi 自己的问题. 安装后文件放置 @menyakun 9 楼说的地方 /data/app/com.tencent.mm . 但安装并不是简单的解压. 里面主要有三块内容, 原本的安装包, 根据机型挤压的 SO 库, 还有为了加快执行速度二生成的 oat 文件(这个最大, 我看到的是 207M). 这个应该是 5.0 换了 VM 后才有的, 怀疑和系统版本和机型有关(本身就是对不同 CPU 的优化文件?)
测试机卸载微信重装测的. 数据是: 安装包微信 7.04 版本 96.35M, 安装后 SO 文件 j 夹 74.72M(很多文件(), base.apkPK 显示 96.60M(应该是大小算法不一样), OAT 下面的 base.odex 207.56M, 最后应用显示一共用了 379M |
16
MozzieW 2019-06-27 14:47:19 +08:00
另外一个, 微信 App 里面显示的, 是聊天数据和缓存(可以清理的), 不包括安装包本身和系统优化的空间. 说实话, 系统优化的东西不能让应用开发者承担责任吧
|
17
realfex OP 谢谢各位大佬解惑!基本明白了!
|