破译 Android Auto Backup 中的“传输拒绝包,因为当时无法处理它”错误

Ama*_*ton 5 java encryption backup android

我一直在尝试按照Android Auto Backup文档页面上的说明进行操作。我不断遇到错误,导致我无法完成应用程序的备份。

首先,我将以下两行添加到我的 AndroidManifest 中:

<application
  ...
  android:allowBackup="true"
  android:fullBackupContent="@xml/my_backup_rules"
  ...
</application>
Run Code Online (Sandbox Code Playgroud)

我创建了一个包含以下几行的my_backup_rules.xml文件:android/app/src/main/res/xml

<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
    <include domain="file" path="db.realm" />
</full-backup-content>
Run Code Online (Sandbox Code Playgroud)

根据 Android Studio 的说法,该db.realm文件相当大,为 18MB,因此这是我计划包含在备份中以保持在 25MB 备份配额内的唯一文件。

按照测试文档,我运行adb shell bmgr list transports并看到以下输出:

* daemon started successfully
    com.android.localtransport/.LocalTransport
    com.google.android.gms/.backup.migrate.service.D2dTransport
  * com.google.android.gms/.backup.BackupTransportService
Run Code Online (Sandbox Code Playgroud)

但是,当我运行下一个测试时,adb shell bmgr backupnow <PACKAGE>我看到以下错误:

Running incremental backup for 1 requested packages.
Package @pm@ with result: Transport rejected package because it wasn't able to process it at the time
Backup finished with result: Transport error
Run Code Online (Sandbox Code Playgroud)

在 中adb logcat,我看到以下内容:

08-12 12:19:28.007  2123  2123 V Bmgr    : Running backupnow for user:0
08-12 12:19:28.017   906  2524 D KeyValueBackupTask: Spinning thread key-value-backup-208
08-12 12:19:28.019   906  2147 D PFTBT   : backupmanager pftbt token=211e7180
08-12 12:19:28.023   906  2147 V KeyValueBackupTask: Beginning backup of 1 targets
08-12 12:19:28.059   906   906 I TransportClient: BackupTransportService#438: Notifying [KVBT.startTask()] transport = IBackupTransport
08-12 12:19:28.062   906  2147 W Binder  : Outgoing transactions from this process must be FLAG_ONEWAY
08-12 12:19:28.062   906  2147 W Binder  : java.lang.Throwable
08-12 12:19:28.062   906  2147 W Binder  :      at android.os.BinderProxy.transact(BinderProxy.java:480)
08-12 12:19:28.062   906  2147 W Binder  :      at com.android.internal.backup.IBackupTransport$Stub$Proxy.name(IBackupTransport.java:869)
08-12 12:19:28.062   906  2147 W Binder  :      at com.android.server.backup.keyvalue.KeyValueBackupTask.startTask(KeyValueBackupTask.java:414)
08-12 12:19:28.062   906  2147 W Binder  :      at com.android.server.backup.keyvalue.KeyValueBackupTask.run(KeyValueBackupTask.java:344)
08-12 12:19:28.062   906  2147 W Binder  :      at java.lang.Thread.run(Thread.java:919)
08-12 12:19:28.065   906  2147 D KeyValueBackupTask: Starting key-value backup of @pm@
08-12 12:19:28.095   906  2147 D KeyValueBackupTask: Invoking agent on @pm@
08-12 12:19:28.095   906  5761 D BackupTransportManager: Transport com.google.android.gms/.backup.BackupTransportService updated its attributes
08-12 12:19:28.104   906  2147 V BackupAgentTimeout: getKvBackupAgentTimeoutMillis(): 30000
08-12 12:19:28.116   906  2147 I BackupRestoreController: Getting widget state for user: 0
08-12 12:19:28.157 29692 31059 I Backup  : [GmsBackupTransport] Performing encrypted kv backup: @pm@
08-12 12:19:28.252   906  2147 I RecoverableAppKeyStore: Get 0/10114/com.google.android.gms.backup/folsom/<TOKEN>
08-12 12:19:28.319   497   497 W /vendor/bin/hw/android.hardware.keymaster@3.0-service: Not performing software digesting for symmetric cipher keys
08-12 12:19:28.421   497   497 I chatty  : uid=9999(nobody) keymaster@3.0-s identical 2 lines
08-12 12:19:28.421   497   497 W /vendor/bin/hw/android.hardware.keymaster@3.0-service: Not performing software digesting for symmetric cipher keys
08-12 12:19:28.455 29692 29714 I gle.android.gm: Waiting for a blocking GC ProfileSaver
08-12 12:19:28.482 29692 29714 I gle.android.gm: WaitForGcToComplete blocked ProfileSaver on HeapTrim for 26.699ms
08-12 12:19:28.497 29692 29704 I gle.android.gm: WaitForGcToComplete blocked Background on ProfileSaver for 14.700ms
08-12 12:19:29.159 29692 31059 I Backup  : [GmsBackupTransport] Backup finished for @pm@
08-12 12:19:29.178   906  2147 I KeyValueBackupTask: K/V backup pass finished
08-12 12:19:29.179   906  2147 D KeyValueBackupTask: Starting full backups for: [<PACKAGE>]
08-12 12:19:29.184   906  2160 I PFTBT   : Initiating full-data transport backup of <PACKAGE> token: <TOKEN>
08-12 12:19:29.193 29692 31059 I Backup  : [GmsBackupTransport] Attempt to do full backup on <PACKAGE>
08-12 12:19:29.294 29692 31059 I Backup  : [FullBackupSession] Using encrypted processor for <PACKAGE>
08-12 12:19:29.335   906  2160 I RecoverableAppKeyStore: Get 0/10114/com.google.android.gms.backup/folsom/<TOKEN>
08-12 12:19:29.365   906  2160 I PFTBT   : Transport rejected backup of <PACKAGE>, skipping
08-12 12:19:29.365   906  2160 I PFTBT   : Unbinding agent in <PACKAGE>
08-12 12:19:29.366   906  2160 W ActivityManager: Unbinding backup agent with no active backup
08-12 12:19:29.366   906  2160 I PFTBT   : Full backup completed with status: 0
Run Code Online (Sandbox Code Playgroud)

Transport rejected backup of <PACKAGE>, skipping根据故障排除文档,错误消息表明我超出了配额。但我的 db.realm 文件小于 25MB,这是我在 .xml 中设置的唯一备份内容,所以我不确定为什么会收到此错误。

同时,在我的测试设备(Pixel XL)上,我可以转到“设置”>“系统”>“备份”并确认“备份到 Google Drive”已打开。其他应用程序的备份正在运行。我在设备上设置了锁定屏幕,因为这似乎是我遇到的早期问题之一,导致我无法运行备份。

关于如何克服这个错误有什么建议吗?