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

2023-07-19 13:01:34 +08:00
 ellermister

介绍

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

主要原理:

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

为什么会做这个?

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

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

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

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

为什么你不退群?

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

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

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

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

功能:

UI 界面操作

支持操作:

效果

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

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

IOS 用户

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

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

开源地址

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

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


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

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

很多群一天到晚全是消息,全存到你的手机。群里发个公众号或者小程序或者浏览器分享的图文信息,又是一大块 xml ,全塞到你的手机里。
ellermister
2023-07-19 22:51:00 +08:00
@x86

@chotow

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

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

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


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



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


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


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


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

有点想换回 Android ,虽然感觉少了点什么,但也还能用。
cheese
2023-07-20 11:48:00 +08:00
Releases 里的安装包无法使用,下载后改成 apk 后缀,手机安装的时候提示安装包损坏
ellermister
2023-07-20 11:49:40 +08:00
@cheese 他不是 apk 程序,是命令行交互的程序。你需要在 shell 终端执行。
cheese
2023-07-20 11:50:15 +08:00
@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