QQ&微信手机版带聊天记录降级方案
手机QQ带聊天记录降级需要root辅助,微信不需要。
此教程目的是将未解锁手机的聊天记录导出后解锁刷机再还原回去。因此不一定具有通用性
1.为什么我会降级?
答案很简单:手机并没有跟上时代更换,而新版本的又增加了一大堆无用功能、内存占用更大等等等等一大堆,虽然手机安装新版也不卡,但是强迫症肯定是忍不了的。
2.论Google提供的降级方案
在adb中提供了app降级安装的命令:
1 |
|
但这条命令不是无条件可用的:
- 只能在app调试模式下可用,但是在我手上的unofficial-lineage的系统里所有app都是可调试状态,所以在los上这条命令是直接可用的,如果没有开启可以参考文末使用magisk开启全局调试的方法。
- 如果不在调试模式下降级,则会报:Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
- 若用adb uninstall -k
保留数据卸载也会保存包versionCode导致报同样的错误
- app最低sdk不能更改,如果最低sdk版本提升了就会报如下错误:Failure [-26: Package com.tencent.mobileqq new target SDK 9 doesn’t support runtime permissions but the old target SDK 26 does.]
3.我所使用的方案
我的两台手机:
- Nubia Z17(NX563J)
- 未解锁,官方系统停止更新
- MI 4W (Cancro)
- Los+Magisk
那么我的需求就很明显了:我需要找到一种可以带聊天记录迁移的方式将Z17的聊天记录备份出来,再解锁刷机之后把聊天记录导入回来。
这样问题就很简单了:
微信非常好解决,最低可迁移聊天记录的版本是6.0,所以6.0之后的所有版本均可以迁移聊天记录。但是微信在新机器上登陆账号时,会触发身份验证,需要另一台手机扫码登陆,而这个验证又限制了最低版本。所以找一个微信6.7以上版本验证过之后,使用adb install -d
QQ这边相比之下就麻烦很多,原因有二:
1、QQ支持聊天记录迁移的版本是8.2.8,太高了。
2、QQ8.2.8的target SDK 是26,也就是安卓8.0,QQ6.6.6左右的版本则是9,也就是安卓2.3.x。这就触发了adb命令的第二条限制。
所以我打开了R.E管理器…
经过多次比对后,保留以下文件就能留得住聊天记录和登陆session
- /data/data/com.tencent.mobileqq路径内:
- config/
- databases/
- files/<qq号>
- files/highway_session_info_dir
- files/下的所有独立文件
- shared_prefs
- filesskins<QQ号>
接下来,卸载新版本,安装旧版本,文件复制进去就好了。因为没有开启seLinux,所以不需要对比权限。
到此,成功保留到聊天记录并且降级成功,附上几个关键节点的apk链接:
附一个开启全局调试的文章:https://zhuanlan.zhihu.com/p/100583752
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!