hank9999小站

MIUI 备份APP还原旧版备份闪退 黑屏问题分析及解决方法

hank9999's Avatar 2022-04-21

  1. 1. 0x01 分析
  2. 2. 0x02 解决方法

总结: 新版备份支持文档、照片、视频、音频的备份,旧版并不支持,描述xml文件中的文件备份信息影响了旧版备份APP的正常运行

0x01 分析

  1. 首先我在备份APP版本为6.4.0.4的MIUI13上备份所有数据(包括文档、照片、视频、音频)
  2. 然后我将我的设备线刷回MIUI11 备份APP版本为6.3.4.2,备份界面没有文档、照片、视频、音频的备份,导入新版备份文件后点开对应的备份,直接闪退,有关文档、照片、视频、音频的备份内容删除后,可以正常还原
  3. 然后再线刷到MIUI12 备份APP版本为6.4.0.1,备份界面没有文档、照片、视频、音频的备份,导入新版备份文件后点开对应的备份,可以加载,点击还原后黑屏,有关文档、照片、视频、音频的备份内容删除后,可以正常还原
  4. 然后再线刷到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 解决方法

有两种方法

  1. 改描述的xml文件,删掉filesModifyTime和packageName为files_for_backup的package,然后即可正常还原
  2. 下载一遍需要恢复的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/