使用“adb backup”以编程方式备份​​应用程序

时间:2015-07-07 09:17:03

标签: java android sqlite adb

目前,我正在使用adb backup命令执行应用程序的备份,我的设备通过micro usb电缆连接到我的电脑。该命令如下所示:

adb backup -f Backups/app.ab -noapk com.me.app

在我的备份文件夹中,哪个输出和android备份(ab)文件名为app.ab。

我想知道是否可以通过编程方式将应用程序备份到SD卡?我只需要定期备份应用程序及其数据库。

有关此问题的任何链接/文档都会有所帮助。

谢谢, 马特

2 个答案:

答案 0 :(得分:2)

您无法从应用程序运行ADB命令(如backup),但您可以运行SHELL命令(LINUX命令从SHELL内部运行{1}}),像这样 -

Process process = Runtime.getRuntime().exec("my_command");  

如果您知道目标和目标文件夹,则可以使用cp命令复制文件。 如果要阅读命令的结果,请使用

BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));

确保您的应用具有写入SD的正确权限。

答案 1 :(得分:0)

阅读adb的源代码后(源:https://github.com/aosp-mirror/platform_system_core/blob/master/adb/daemon/services.cpp)。

我发现

/ system / bin / bu备份软件包名称

/ system / bin / bu恢复

是可用于备份和还原的shell命令。

不幸的是,如果没有超级用户访问权限,这对我的设备不起作用

仅以下代码适用于有根设备:

try {
    Process su = Runtime.getRuntime().exec("su");
    DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

    outputStream.writeBytes("/system/bin/bu backup all\n");
    outputStream.flush();

    outputStream.writeBytes("exit\n");
    outputStream.flush();
    su.waitFor();
} catch(Exception e) {}