安卓adb备份存储问题

3

我在使用我的安卓手机——Lenovo Vibe Shot Z90a40,安卓版本为5.1时,使用adb bakup功能遇到了问题。我尝试备份Viber,但是这个问题也会出现在其他应用程序和完整备份中。产生的.ab文件大小总是约为40字节。

我创建了一个.bat脚本,在其中执行logcat以查看设备上发生了什么:

@echo off
echo Connecting.
"%~dp0adb" version
"%~dp0adb" kill-server
"%~dp0adb" wait-for-device

"%~dp0adb" shell am force-stop com.viber.voip

echo Enter Backup My Data on Android phone screen.
"%~dp0adb" backup -f "%~dp0viber.ab" com.viber.voip

ping -n 10 127.0.0.1>nul 
"%~dp0adb" shell logcat -d > "%~dp0log.txt"
"%~dp0adb" kill-server

echo "press any key to exit." 
pause

我在日志中看到了错误信息,告诉我没有足够的可用空间:

I/BackupManagerService( 1136): --- Performing full-dataset adb backup ---

I/BackupManagerService( 1136): Initiating bind of OBB service on com.android.server.backup.BackupManagerService$FullBackupObbConnection@3bc92971

W/ContextImpl( 1136): Calling a method in the system process without a qualified user: android.app.ContextImpl.bindService:1809 com.android.server.backup.BackupManagerService$FullBackupObbConnection.establish:2998 com.android.server.backup.BackupManagerService$PerformAdbBackupTask.run:3620 java.lang.Thread.run:818 <bottom of call stack> 

E/Cryptfs (  304): not running with encryption, aborting

I/BackupManagerService( 1136): OBB service connection com.android.internal.backup.IObbBackupService$Stub$Proxy@22da70c4 connected on com.android.server.backup.BackupManagerService$FullBackupObbConnection@3bc92971

D/BackupManagerService( 1136): Binding to full backup agent : com.viber.voip

W/BackupManagerService( 1136): ensureAvailableSpace 

D/BackupStrogeUtils( 1136):  freeCacheStorage bytes=230686720

D/BackupStrogeUtils( 1136):  freeCacheStorage Start bytes:230686720

D/BackupStrogeUtils( 1136):  listFilesRecursive start uid=1000

D/BackupStrogeUtils( 1136):  listFilesRecursive file = /cache/recovery/last_log_r file.stat.st_uid=0

D/BackupStrogeUtils( 1136):  listFilesRecursive file = /cache/recovery/last_install file.stat.st_uid=0

D/BackupStrogeUtils( 1136):  listFilesRecursive file = /cache/recovery/last_locale file.stat.st_uid=0

D/BackupStrogeUtils( 1136):  freeCacheStorage Found 0 on cache

D/BackupStrogeUtils( 1136):  freeCacheStorage End 

D/BackupStrogeUtils( 1136): Not enough free space; 230686720 requested, 220848128 available

D/BackupManagerService( 1136): backupOnePackage ensureAvailableSpace failed : com.viber.voip

D/BackupManagerService( 1136): Full backup processing complete.

D/bu      (26755): Finished.

但是我的设备上有很多空闲空间。我执行了df命令:

@echo off
"%~dp0adb" kill-server
"%~dp0adb" shell df > df.txt
"%~dp0adb" kill-server
echo Done!
pause

以下是结果:

* daemon not running. starting it now on port 5037 *
* daemon started successfully *
Filesystem               Size     Used     Free   Blksize

/dev                     1.4G    76.0K     1.4G   4096

/sys/fs/cgroup           1.4G    12.0K     1.4G   4096

/mnt/asec                1.4G     0.0K     1.4G   4096

/mnt/obb                 1.4G     0.0K     1.4G   4096

/system                  1.9G     1.7G   255.5M   4096

/data                   25.4G    12.3G    13.1G   4096

/preload               387.4M   127.5M   259.9M   4096

/cache                 248.0M   220.0K   247.7M   4096

/persist                27.5M   184.0K    27.3M   4096

/firmware               64.0M    51.1M    12.9M   16384

/mnt/shell/emulated     25.3G    12.3G    13.1G   4096

/storage/emulated/legacy    25.3G    12.3G    13.1G   4096

/storage/sdcard0        25.3G    12.3G    13.1G   4096

我在/data分区上有将近13GB的可用空间。奇怪的是备份恢复功能却可以正常工作,我成功地将Viber包从旧手机转移到了这个手机。
我发现一个类似的帖子,并尝试了adb的版本1.0.311.0.32,但结果都一样。 有人知道问题出在哪里吗? 非常感谢您提供的任何帮助。

你找到解决方案了吗? - flindeberg
不,仍然没有解决方案。 - Mladen Nochev
查找您的设备的adb版本。进入设备的shell并执行adb version。如果版本低于1.0.32,请在您的机器上使用adb 1.0.31。;) - Alan CN
1个回答

2

这个SO线程中,按照ADB参数的描述为我解决了备份无法工作的问题。

例如:

adb backup "-apk -shared -all -f backup.ab"

我使用了1.0.31版本,但它可能不是导致问题的因素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接