总结: 新版备份支持文档、照片、视频、音频的备份,旧版并不支持,描述xml文件中的文件备份信息影响了旧版备份APP的正常运行
0x01 分析
- 首先我在备份APP版本为6.4.0.4的MIUI13上备份所有数据(包括文档、照片、视频、音频)
- 然后我将我的设备线刷回MIUI11 备份APP版本为6.3.4.2,备份界面没有文档、照片、视频、音频的备份,导入新版备份文件后点开对应的备份,直接闪退,有关文档、照片、视频、音频的备份内容删除后,可以正常还原
- 然后再线刷到MIUI12 备份APP版本为6.4.0.1,备份界面没有文档、照片、视频、音频的备份,导入新版备份文件后点开对应的备份,可以加载,点击还原后黑屏,有关文档、照片、视频、音频的备份内容删除后,可以正常还原
- 然后再线刷到MIUI12.5 备份APP版本为6.4.0.3,备份界面没有文档、照片、视频、音频的备份,导入新版备份文件后点开对应的备份,可以正常还原其他内容
从旧版到新版的应用package信息没有明显变化
旧版 6.4.0.1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MIUI-backup> <jsonMsg></jsonMsg> <bakVersion>2</bakVersion> <brState>3</brState> <autoBackup>false</autoBackup> <device>设备代号</device> <miuiVersion>V12.1.4.0.RGICNXM</miuiVersion> <date>时间戳</date> <size>1234</size> <storageLeft>1234</storageLeft> <supportReconnect>true</supportReconnect> <autoRetransferCnt>0</autoRetransferCnt> <transRealCompletedSize>0</transRealCompletedSize> <packages> <package> <packageName>com.android.contacts</packageName> <feature>1</feature> <bakFile>通话记录(com.android.contacts).bak</bakFile> <bakType>1</bakType> <pkgSize>1234</pkgSize> <sdSize>0</sdSize> <state>1</state> <completedSize>1234</completedSize> <error>0</error> <progType>1</progType> <bakFileSize>1234</bakFileSize> <transingCompletedSize>0</transingCompletedSize> <transingTotalSize>0</transingTotalSize> <transingSdCompletedSize>0</transingSdCompletedSize> <sectionSize>0</sectionSize> <sendingIndex>0</sendingIndex> </package> </packages> <filesModifyTime /> </MIUI-backup>
|
新版 6.4.0.4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MIUI-backup> <jsonMsg></jsonMsg> <bakVersion>2</bakVersion> <brState>3</brState> <autoBackup>false</autoBackup> <device>设备代号</device> <miuiVersion>V13.0.9.0.SLNCNXM</miuiVersion> <date>时间戳</date> <size>1234</size> <storageLeft>1234</storageLeft> <supportReconnect>true</supportReconnect> <autoRetransferCnt>0</autoRetransferCnt> <transRealCompletedSize>0</transRealCompletedSize> <packages> <package> <packageName>com.android.contacts</packageName> <feature>1</feature> <bakFile>通话记录(com.android.contacts).bak</bakFile> <bakType>1</bakType> <pkgSize>1234</pkgSize> <sdSize>0</sdSize> <state>1</state> <completedSize>1234</completedSize> <error>0</error> <progType>1</progType> <bakFileSize>1234</bakFileSize> <transingCompletedSize>0</transingCompletedSize> <transingTotalSize>1234</transingTotalSize> <transingSdCompletedSize>0</transingSdCompletedSize> <sectionSize>0</sectionSize> <sendingIndex>0</sendingIndex> </package> <package> <packageName>files_for_backup</packageName> <feature>5</feature> <bakFile>/storage/emulated/0/xxx/xxxx.jpg</bakFile> <bakType>5</bakType> <pkgSize>1234</pkgSize> <sdSize>0</sdSize> <state>1</state> <completedSize>1234</completedSize> <error>0</error> <progType>0</progType> <bakFileSize>0</bakFileSize> <transingCompletedSize>0</transingCompletedSize> <transingTotalSize>0</transingTotalSize> <transingSdCompletedSize>0</transingSdCompletedSize> <sectionSize>0</sectionSize> <sendingIndex>0</sendingIndex> </package> </packages> <filesModifyTime> <bakFile>/storage/emulated/0/xxx/(时间戳)xxxx.jpg</bakFile> </filesModifyTime> </MIUI-backup>
|
经过对比分析,MIUI新版备份APP新增了文件的备份,但是描述信息仍然放在原来的package里,如果能单独出来,不在package里,我猜测低版本的兼容性会好很多
分析可知,feature和bakType对应为5是图片,6为音频,7为视频,8为文档,然后再将文件对应的时间戳放进filesModifyTime中
根据6.4.0.1生成的xml文件中有filesModifyTime,6.4.0.3可以正常还原非文档、照片、视频、音频的其他应用推断,从6.4开始MIUI团队再慢慢做相关功能,但直到6.4.0.4才开放相关功能
0x02 解决方法
有两种方法
- 改描述的xml文件,删掉filesModifyTime和packageName为files_for_backup的package,然后即可正常还原
- 下载一遍需要恢复的app,然后备份,再将需要还原的bak文件替换刚刚备份的bak文件,也可以正常还原
对于文档、照片、视频、音频文件,小米是按照目录直接打包zip的,根目录文件在zip的根目录,其他目录在zip内文件夹_目录内,直接解压即可
PS: 格式化xml后一定要再压缩,MIUI备份不认没压缩的xml
本文作者 : hank9999
版权声明 :本站所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议。转载请注明出处!
本文链接 : https://blog.hank.ltd/MIUI-backup-crash-fc-black-screen/