安卓自动备份:传输被拒绝包

5

我正在尝试测试Android自动备份。我的设备是7.1版本,并且应用清单包含:android:fullBackupOnly="true"。当我发出adb shell bmgr backupnow <package>命令(为了SO帖子,我用占位符替换了我的包名),我看到了一个看起来像是失败的结果:

Running backup for 1 requested packages.
Package @pm@ with result: Success
Package <package> with result: Transport rejected package
Backup finished with result: Success

如果我将清单文件更改为 android:fullBackupOnly="false"(即使用旧的K/V备份),然后重新发布backupnow命令,我看到了成功的结果:
Running backup for 1 requested packages.
Package @pm@ with result: Success
Package <package> with result: Success
Backup finished with result: Success

在被拒绝的情况下查看Logcat,我看到以下内容:

11-10 09:27:59.660 1683-1683/? D/AndroidRuntime: Calling main entry com.android.commands.bmgr.Bmgr
11-10 09:27:59.669 1035-2498/? V/PerformBackupTask: Beginning backup of 0 targets
11-10 09:27:59.677 1035-2498/? D/PerformBackupTask: invokeAgentForBackup on @pm@
11-10 09:27:59.685 1035-2498/? I/BackupRestoreController: Getting widget state for user: 0
11-10 09:27:59.691 1035-2498/? D/PerformBackupTask: Starting full backups for: [<package>]
11-10 09:27:59.692 1035-2498/? I/BackupManagerService: K/V backup pass finished.
11-10 09:27:59.693 1035-1699/? I/PFTBT: Initiating full-data transport backup of <package>
11-10 09:27:59.695 12554-12566/? I/Backup: [GmsBackupTransport] Attempt to do full backup on <package>
11-10 09:27:59.697 1035-1699/? I/PFTBT: Transport rejected backup of <package>, skipping
11-10 09:27:59.697 1035-1699/? I/PFTBT: Unbinding agent in <package>
11-10 09:27:59.697 1035-1699/? W/ActivityManager: Unbinding backup agent with no active backup
11-10 09:27:59.697 1035-1699/? I/PFTBT: Full backup completed with status: 0
11-10 09:27:59.697 1035-1699/? I/BackupManagerService: Full data backup pass finished.

以下内容为涉及相关行:

11-10 09:27:59.695 12554-12566/? I/Backup: [GmsBackupTransport] Attempt to do full backup on <package>
11-10 09:27:59.697 1035-1699/? I/PFTBT: Transport rejected backup of <package>, skipping

为什么完整/自动备份失败?

以下是成功(K/V)情况下的完整Logcat:

11-10 09:31:21.750 2200-2200/? D/AndroidRuntime: Calling main entry com.android.commands.bmgr.Bmgr
11-10 09:31:21.762 1035-2498/? V/PerformBackupTask: Beginning backup of 1 targets
11-10 09:31:21.768 1035-2498/? D/PerformBackupTask: invokeAgentForBackup on @pm@
11-10 09:31:21.775 1035-2498/? I/BackupRestoreController: Getting widget state for user: 0
11-10 09:31:21.780 1035-2498/? D/PerformBackupTask: starting key/value backup of BackupRequest{pkg= <package>}
11-10 09:31:21.783 1035-2498/? D/BackupManagerService: awaiting agent for ApplicationInfo{b68136a  <package>}
11-10 09:31:21.793 1035-1815/? D/BackupManagerService: agentConnected pkg= <package> agent=android.os.BinderProxy@6750684
11-10 09:31:21.793 1035-2498/? I/BackupManagerService: got agent android.app.IBackupAgent$Stub$Proxy@5e82e6d
11-10 09:31:21.793 1035-2498/? D/PerformBackupTask: invokeAgentForBackup on  <package>
11-10 09:31:21.796 1908-1920/ <package> D/BackupAgent: onBackup
11-10 09:31:21.796 1908-1920/ <package> D/BackupHelperDispatcher: handling existing helper 'data'  <package>.io.DbBackupHelper@35d5ebe
11-10 09:31:21.798 1908-1920/ <package> D/BackupHelperDispatcher: handling existing helper 'prefs' android.app.backup.SharedPreferencesBackupHelper@6936b1f
11-10 09:31:21.800 1035-2498/? I/BackupRestoreController: Getting widget state for user: 0
11-10 09:31:21.805 2200-2200/? D/AndroidRuntime: Shutting down VM
11-10 09:31:21.807 1035-2498/? I/BackupManagerService: K/V backup pass finished.
2个回答

0

我遇到了完全相同的错误,最终找到了解决方案:

build.gradle 中的 targetSdkLevel 必须设置为23或更高。

如果将 targetSdkLevel 设置为例如 21,则项目将在模拟器中编译和运行良好。但是,为了能够将 Google Play 服务用作备份目标(我想大多数人都在使用),它必须至少为 23。


同样的问题在至少某些设备上仍然出现在API级别29。在我的三星SM-T585平板电脑上,我只能备份我的应用程序一次,所有其他时间都会看到“传输拒绝了...的备份”。 - diidu

0

https://developer.android.com/guide/topics/data/testingbackup.html上的文档如下:

超过配额

如果您在logcat中看到以下消息:

I/PFTBT:传输拒绝了PACKAGE的备份,跳过

--- 或 ---

I/PFTBT:包的传输配额已超过:PACKAGE

您的应用程序已超过配额,并已被禁止在此设备上备份数据。要解除禁令,请对设备进行出厂设置或更改备份帐户。


我看到了,但文档表明每个应用的配额应该是25MB,而我应该远低于这个值。 - Alex Rothberg
如果您在模拟器中安装了应用程序,则可以使用以下命令检查文件: adb shell; su; ls -la /sdcard/Android/data/<package>/files; ls -la /data/data/<package>; - Claus Holst
1
我有同样的问题,情况是"I/PFTBT: Transport rejected backup of PACKAGE, skipping",我甚至尝试了使用全新安装的应用程序并删除了所有数据,但仍然无法解决。我尝试为传输设置详细属性,但无法找到拒绝的原因:( - Petr Nalevka
@PetrNalevka 我也遇到了同样的问题,有更新吗? - javierZanetti

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