解放微信存储空间!一键清理群聊记录,减少十几 GB 体积!

317 天前
 ellermister

介绍

释放你的安卓微信内部存储空间,一键解放微信存储空间的工具。

主要原理:

通过解密微信的数据库,过滤出群聊天记录,并找出相关的缓存文件、图片、视频等,一并删除。最后,删除这些数据库记录,从而缩减数据库的大小。

为什么会做这个?

由于记忆力有限,可能不想删除所有的聊天记录,而是希望保留联系人记录,以便在需要时可以参考上下文。

然而,微信甚至不像 QQ 那样,可以手动点击接收图片。微信默认会接收所有群组的消息、图片和视频缓存等,群里聊的每一个字节都存到了你的手机里。

此外,微信的文件分类管理非常混乱,这些文件甚至被隐藏在 /data 目录中,只有具备 root 权限的用户才能进行处理。即使你有 root 权限,也无法轻易找出哪些文件可以删除,哪些文件不能删除。

长期以来,虽然你的联系人资料可能并不占用太多存储空间,但群组的资料却可能占据了大部分空间。

为什么你不退群?

没有习惯退群,即使退了,群组之前的记录仍会像狗皮膏药一样永远存储在你的手机中,无法轻易清除。

为什么不用内置聊天管理?

内置的聊天管理功能根本无法满足清理需求,缺乏一键选择群组的功能。

经过测试,即使勾选了清理选项,导出数据后你会发现数据库和缓存中仍然存在数据,内置功能并没有完全清理干净,就像删除了一个软连接一样。(测试自 8.0.2 版本)

功能:

UI 界面操作

支持操作:

效果

这是搞了好几天的成果,虽然还是很大,但已经减少了十几 GB 的体积!

好在是可以弄成一键工具进行清理了。

IOS 用户

对于没有 root 的 Android 或者 IOS 用户来说无法实现。

可以许愿未来哪一天宇宙级产品经理愿意实现自定义备份功能了,就有解了!

开源地址

https://github.com/ellermister/wechat-clean

6451 次点击
所在节点    分享创造
49 条回复
ellermister
317 天前
@lovelylain 你说的那几次我不知道是啥。
我是说设置/一般/存储空间那里对聊天室清理,之前是清理不干净,图片和数据库依然存在残留。
ellermister
317 天前
@lovelylain 你可以把那几行删除数据库记录的代码屏蔽掉编译下就行。


另外在这里说明下,微信数据库只要你在线记录所有加的群的聊天记录,记录每一个文字和表情符号,图片语音缓存。

别人发了一个表情,你以为就占用几个字节,实际上他存了一个 xml 结构体,一个二进制的实体,还有一堆群用户关联的信息,还有索引信息。我估计几百 K 都少了吧。

很多群一天到晚全是消息,全存到你的手机。群里发个公众号或者小程序或者浏览器分享的图文信息,又是一大块 xml ,全塞到你的手机里。
ellermister
317 天前
@x86

@chotow

那个是 mock 的数据要正向一些!😂
anjingdexiaocai
317 天前
如果要 root 的话,那我还是备份到电脑,然后卸载软件,再备份回来😂
wayne3602
316 天前
问一下,如果可以做成模块,是不是就可以利用 lspatch 等免 root 工具让无 root 用户使用了?毕竟无 root 用户还是居多的,对于家人,让他们 root 更不现实,而他们的群聊天记录往往比我们还多
ellermister
316 天前
可以的,劫持到微信的 db 连接,就行。只是我不会,调试也太麻烦,懒得弄。
@wayne3602
yhm2046
316 天前
好人一生平安,请问下我有一台 pixel2xl 手机进不了系统了可以恢复内存里面的聊天记录吗?
Jirajine
316 天前
既然解密了微信的聊天记录数据库,那么对其进行导出到通用格式或 html 这种易于浏览的格式应该更有价值,至少 dump 一份原始数据库的未加密版放 db 软件里浏览。
另外关于计算密钥的部分是不是过时了,Android 早就不能获取 IMEI 了,新版本密钥的生成方式肯定也不一样,frida 脚本应该是很不错的方式。
@wayne3602 如果你能够 patch 微信,并且安装使用 patch 后的微信,且微信允许你这么做,还不封你号,那么用 frida 也是一样的,frida 也可以通过 patch 的方式注入到特定应用中。
villivateur
316 天前
我觉得更大的意义是能解密微信聊天记录啊,如果能做一个导出聊天记录的功能就更好了
opengps
316 天前
漂亮,微信的臃肿确实不是自带聊天记录管理能解决的,重点是哪些 emo 表情的 data 存储根本清理不掉
shinsekai
316 天前
其实借助电脑备份一下聊天记录,卸载后再转回来应该就可以实现同样的效果。另外 iOS 聊天获取可以通过 itunes 备份吧
wayne3602
316 天前
@Jirajine 参考微信模块-微 x
allplay
316 天前
常规手段操作:备份聊天记录至电脑,只选择你要保存的;卸载微信,清除残余文件;重装微信,把聊天记录恢复过来。
这样确实能消除微信内被秘密备份的不可删除数据,且不必 root 。缺点是每次备份恢复时间稍长,一年弄一次即可。
thetbw
316 天前
导出和备份聊天记录感觉用户量更大,还有找到之前删除的好友这种,毕竟后悔药
lqzhgood
316 天前
推一下自己写的聊天记录归档工具,可以导出微信记录做冷备份,而且不管用没用到的字段都会导出,确保数据完整

[卖瓜 🍉] Shmily-聊天记录归档 支持 QQ 、Wechat 、SMS 等
https://v2ex.com/t/944851
zzz22333
316 天前
@thetbw 同感
ellermister
316 天前
@villivateur 之前已经有人做了微信备份聊天记录到文件的项目,可以在 GitHub 搜一下,也是需要 root 。你也可以用我的这个源码改,如果你是只用一次也没必要,可以 dump 出不加密的 DB ,在电脑里随时用 SQL 工具看。

我有想过,弄个服务在 Android 后台,用浏览器打开界面就能搜关键词,搜聊天记录,真 like 搜索,微信现在[牛逼]的搜索功能,明明聊天记录有,就是搜不到,太[牛逼]了。暂时感觉我自己没需求了,懒得搞。


@thetbw 我想不起来主动删除的好友,但是如果是被别人删除的,那么 rcontact 表里就有你想要的,like %关键词% 查找就行。另外还有特别关注、拉黑的好友等,包括你加的所有群的群成员都在里面。



@anjingdexiaocai
@allplay 从手机备份到电脑是一种方式,但是依然是不能只备份联系人,不能搜索选择全选的操作。就会导致备份一大堆垃圾数据上去,如果你只有几十个少量联系人愿意手动挑选,那么你确实不需要这种功能。


@shinsekai IOS 备份的也是全量备份,参考上一条,而且我是免费计划用户,只有 5GB ,无法备份。


@yhm2046 把你存储卡的数据导出来到电脑里,你慢慢折腾,网上文章不少,先从解密数据库开始。可以计算 key ,从配置文件找 KEY 和 IMEI ,另外如果你打包的得当,可以在另外一台设备上登录的并拥有完整数据。


我自己已经把微信垃圾清理干净了,备份到电脑,再恢复到全新 iPhone 上,最近会话和好友和聊天记录都在。但失去了好友请求记录,包含你什么时间加的好友,发的什么备注信息,反过来一样,有一个时间线先后信息,辅助记忆。

有点想换回 Android ,虽然感觉少了点什么,但也还能用。
cheese
316 天前
Releases 里的安装包无法使用,下载后改成 apk 后缀,手机安装的时候提示安装包损坏
ellermister
316 天前
@cheese 他不是 apk 程序,是命令行交互的程序。你需要在 shell 终端执行。
cheese
316 天前
@cheese #38 乌龙了!!!原来不是直接安装的 apk

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/957949

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX