-
-
如何有效地备份和恢复单个应用的文件,还在被allowBackup折腾吗
-
-
如何有效地备份和恢复单个应用的文件,还在被allowBackup折腾吗
安卓系统内其实是有一套成熟的文件备份/恢复方案的,也即运行
1 2 3 | adb backup -obb -shared -widgets {appname} -f back.ab
adb restore back.ab
|
或者在本机shell环境下执行
1 2 3 | bu backup -obb -shared -widgets {appname} > back.ab
bu restore < back.ab
|
但是似乎在高版本下这套方案很少起作用了。原因即是AndroidManifest.xml文件里声明的
1 | <application ... android:allowBackup="false" ...>
|
会阻止自带的backup服务正常运行,谷歌也是出于对应用隐私服务的保护
那么这个到底是怎么工作的呢
归根结底,其实是BackupEligibilityRules类下两个函数的判定导致了这个行为差异
1 2 3 | public boolean isAppBackupAllowed(ApplicationInfo app)
public boolean appIsEligibleForBackup(ApplicationInfo app)
|
实测在需要备份时,hook一下系统服务,对这两个函数临时取恒返回true,即可正常地备份与恢复数据。
体现为以下自带恢复备份的界面用时会明显长于不替换返回值

这是本逆向实验室在开发备份功能时归纳得到的两个判据入口,感兴趣的可以自己动手做实验试一下。
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!