安卓微信的一个大困惑,求大佬们解答 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
realfex
V2EX    Android

安卓微信的一个大困惑,求大佬们解答

  •  
  •   realfex 2019-06-26 18:25:00 +08:00 13445 次点击
    这是一个创建于 2302 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近换了个新安卓手机,发现一个现象

    微信安装包 90M,安装完成后,在应用程序管理里看到微信的占用空间是 230M

    其实为什么 90M 能安装出 230M 我也不是很明白,难道这里面有多层压缩?或者安装过程中创建了或者拷贝了很多有内容的文件?

    当然还有更疑惑的

    我不登录的情况下,占用一直是 230M。但是当我随便登录一个账号,哪怕是刚注册的账号之后,应用程序管理里微信的占用瞬间到了 580M。而且在手机的文件管理里确实是可以看到总存储空间是少了 300 多 M 的。

    在短短的不超过 3 秒时间里,体积增加了 300 多 M,显然不是联网下载的。

    我第一反应是去找这些文件,手机文件管理里一直没找到多出来的这 300M 的文件,后来网上查了才知道,应该是在根目录的 data 文件夹里(手机没 root 是看不到的)

    那么问题来了:

    1.微信是如何做到 230M 的体积登录后瞬间变成 580M 的,这里面做了什么,一直复制文件?解压文件?写文件?

    2.这些文件是用来干嘛的,为什么需要这么大?

    小弟对此真的很好奇,跪求安卓大佬们解答。。

    (而且微信 app 里显示的微信占用空间只有 120M,实在是有点混淆视听。)

    17 条回复    2019-06-28 10:34:10 +08:00
    yangyn
        1
    yangyn  
       2019-06-26 18:47:59 +08:00
    同疑惑,坐等大佬解答
    kaedea
        2
    kaedea  
       2019-06-26 18:49:43 +08:00 via Android   1
    AOT
    bbq777aass
        3
    bbq777aass  
       2019-06-26 19:04:07 +08:00 via Android
    好问题,同坐等专家
    yukiww233
        4
    yukiww233  
       2019-06-26 19:06:38 +08:00   3
    第一次安装会解压出所有 so 和生成 oat 文件
    第一次打开 vx 会解压出插件化的组件和各种乱七八糟的黑科技
    realfex
        5
    realfex  
    OP
       2019-06-26 19:09:09 +08:00
    @yukiww233 也就是说那 580M 其实都是 90M 的安装包 一层层解压或者安装过程中生成出来的?
    yukiww233
        6
    yukiww233  
       2019-06-26 19:13:22 +08:00
    @realfex #5 大部分是的。第一次打开大厂应用基本都会下载大量的 hotfix 和插件 /资源(目测几十 M 有的),至于是不是立刻 apply 就不知道了
    lizhuoli
        7
    lizhuoli  
       2019-06-26 19:14:52 +08:00 via iPhone
    Android 是可以动态下发代码执行的,现在所谓的 5M apk,第一次启动后就开始下载插件,最后变成 200MB 很常见

    iOS 从系统级别断掉了这个可能性,非系统的 entitlements 的 App,在 Data 段不允许执行代码,JIT 什么的都别想啦
    zzsakurazz
        8
    zzsakurazz  
       2019-06-26 19:15:27 +08:00
    可以安装后监控下流量监控
    menyakun
        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 之类的文件预分配的大小
    pursuer
        10
    pursuer  
       2019-06-26 20:30:26 +08:00
    微信有一个叫 tinker 的东西,热修复用的,安装后会解压到 data 里,然后优化成 oat 文件,这个 oat 之前我看到的时候有 150mb 左右吧。
    antileech
        11
    antileech  
       2019-06-26 21:49:54 +08:00
    230M 本身包含了 90M 的 apk,剩下的 140M 才是解压的 so 和生成的 oat 文件,90M->140M,没什么毛病啊
    rb6221
        12
    rb6221  
       2019-06-26 23:20:20 +08:00
    换了安卓手机?难道你以前用的 ios 手机不是几个 G 的数据? ios 是什么原因,安卓就是什么原因。
    lucaslai
        13
    lucaslai  
       2019-06-27 08:55:36 +08:00
    和 qq 一样安装包小用一用的就越长越大,不过 qq 会有一个“正在更新数据”的进度条,而微信没有。
    Minson
        14
    Minson  
       2019-06-27 09:36:12 +08:00
    安装软件就是解压的过程啊,装好之后还要初始化,各种配置文件,数据库什么的。越用越大
    MozzieW
        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
    MozzieW
        16
    MozzieW  
       2019-06-27 14:47:19 +08:00
    另外一个, 微信 App 里面显示的, 是聊天数据和缓存(可以清理的), 不包括安装包本身和系统优化的空间. 说实话, 系统优化的东西不能让应用开发者承担责任吧
    realfex
        17
    realfex  
    OP
       2019-06-28 10:34:10 +08:00
    谢谢各位大佬解惑!基本明白了!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     903 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:58 PVG 05:58 LAX 14:58 JFK 17:58
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86