用于提取和重新打包通过 adb backup(ICS+)创建的 Android 备份的工具。
主要基于 AOSP 中的 BackupManagerService.java。
需要 Java 11。处理加密备份需要 JCE 无限强度管辖策略(如果使用当前 Java 9 版本则不需要)。
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
使用下面列出的工具之一进行构建,或者参见发布版以获取预构建的二进制文件(可运行的 jar 文件)。
从此处下载最新版本的 Bouncy Castle Provider jar
(bcprov-jdk15on-*.jar):
将最新的 Bouncy Castle jar 放入 lib/ 目录,在 Eclipse 中导入并根据需要调整构建路径。使用 abe 脚本启动该工具。
要创建可自执行的一体化 jar:
mvn clean package 然后:
java -jar target/abe.jar pack|unpack|pack-kk ...
使用捆绑的 Ant 脚本创建一体化 jar 并运行:
(你仍然需要将 Bouncy Castle jar 放入 lib/;相应地修改 bcprov.jar 属性)
java -jar abe.jar pack|unpack|pack-kk ...
(感谢 Jan Peter Stotz 贡献了 build.xml 文件)
使用 Gradle 创建一体化 jar:
./gradlew 然后:
java -jar build/libs/abe-all.jar pack|unpack|pack-kk ...
abe unpack <backup.ab> <backup.tar> [password]abe pack <backup.tar> <backup.ab> [password]abe pack-kk <backup.tar> <backup.ab> [password]
(创建版本 2 的备份,兼容 Android 4.4.3)如果文件名是 -,则数据从标准输入读取或写入标准输出。
如果未在命令行中提供密码,则会尝试环境变量 ABE_PASSWD。如果不指定密码,备份存档将不会被加密,仅会被压缩。
allowBackup 标志设置为 false 的应用不会被备份或恢复。
adb push 和 adb shell 手动恢复)BackupManagerService。最安全的打包 tar 存档方法是从原始 backup.tar 文件中获取文件列表:
tar tf backup.tar | grep -F "com.package.name" > package.list
然后使用该列表构建 tar 文件。在解压后的备份目录中:
tar cf restore.tar -T package.list
现在你可以打包 restore.tar 并尝试使用 adb restore restore.ab。
发布版由 Travis CI 从 master 分支构建,并包含一个可运行的 fat jar。
自行承担使用二进制文件的风险。不提供任何保证或支持。
请仅报告备份提取器本身的错误,我无法回答有关解包/重新打包备份或 tar 文件的问题。 (请参阅用法了解简要使用指南。)
关于备份格式和工具实现的更多细节,请参见相关博客文章。