【问题标题】:Android Backup Manager only works on Local transportAndroid 备份管理器仅适用于本地传输
【发布时间】:2016-06-13 20:34:48
【问题描述】:

一个多月以来,我一直在尝试在我的应用上实施备份,但到目前为止还没有成功。 我已经完成了谷歌文档通知的每一个步骤: 在谷歌服务上注册 Manifest 上的更改(allowBackup、backupAgent 和 backup.api_key(google 服务注册)等...

清单部分:

<application
   android:allowBackup="true"
   android:backupAgent="my.package.MyBackupManagerClass">

<meta-data android:name="com.google.android.backup.api_key" 
   android:value="my-generated-key-by-google-service" />

事实上,备份正在工作,但只使用本地传输,我曾使用 bmgr backup/run/restore 进行过测试:

bmgr list transports
  * android/com.android.internal.backup.LocalTransport
    com.google.android.gms/.backup.BackupTransportService

但是当尝试使用谷歌传输(云:com.google.android.gms/.backup.BackupTransportService它不起作用,甚至不能从MyBackupAgentHelper 调用我的onCreate()

我想提到的一点是,当我跑步时: bmgr 备份 bmgr 运行

运行命令后,logcat 上显示了很多“Now staging backup of”(也在此列表中显示了我的应用程序包),但它发生得非常快,实际上似乎并没有完成备份,之后所有,甚至我的 MyBackupHelper.onCreate() 都没有被调用:

02-12 21:13:28.889: D/BackupManagerService(547): Now staging backup of com.google.android.talk
02-12 21:13:28.904: D/BackupManagerService(547): Now staging backup of com.google.android.dialer
02-12 21:13:28.907: D/BackupManagerService(547): Now staging backup of com.android.providers.settings
02-12 21:13:28.910: D/BackupManagerService(547): Now staging backup of com.sirma.mobile.bible.android
02-12 21:13:28.914: D/BackupManagerService(547): Now staging backup of com.android.sharedstoragebackup
02-12 21:13:28.919: D/BackupManagerService(547): Now staging backup of com.google.android.gm
02-12 21:13:28.922: D/BackupManagerService(547): Now staging backup of com.android.providers.userdictionary
02-12 21:13:28.926: D/BackupManagerService(547): Now staging backup of com.google.android.apps.genie.geniewidget
02-12 21:13:28.963: I/GmsBackupTransport(1409): Next backup will happen in 86399923 millis.
02-12 21:13:28.967: I/BackupManagerService(547): Backup pass finished.

【问题讨论】:

  • 您应该发布清单,以便我们确保您已正确注册服务和备份代理。
  • @Kairos,我已经在问题上添加了清单信息。
  • 这是在模拟器还是物理设备上?
  • 物理。 Nexus 4 我和 Moto G 也有睾丸
  • 您确定您从以前的备份中获得了新数据吗? BackupManager 仅在数据从上一次备份中更改时才备份数据。

标签: android android-backup-service


【解决方案1】:

我遇到了同样的情况 - 当我运行手动备份(通过 adb shell 命令)时,它正在工作,但只使用本地传输。对我来说,解决方案是发布 Google Play 服务,因为我已经测试了没有发布 GP 服务的数据备份服务。如果您正在使用 Proguard,请检查您的 proguard 配置

【讨论】:

  • “到公共 Google Play 服务”是什么意思?我们可以检查 Proguard 上的哪些配置?谢谢!
  • 我已经准备好新的应用程序了,我还没有第一次发布Google Play服务。所以对我来说,它是: 1. 发布(公共)Google Play 服务并将这一行添加到 proguard( -keep class * extends android.app.backup.BackupAgentHelper )。我不知道proguard中的这行是否必要。
  • 好的,知道了。所以也许网络上的备份只有在您发布应用程序后才有效?在我测试时,我的应用程序还没有在 Google Play 上发布。
  • 也许是这样。您能否发布应用程序并测试它是否适合您?我在 Google Play 发布一天后测试了备份。
  • 其实我之前已经发布了我的应用程序,而且我还实现了另一个备份解决方案。但现在我无法测试它。但我将来会这样做。但是,如果它对您有用,并且我认为您的观点是我将标记为答案的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-29
  • 2020-02-18
  • 2017-05-31
相关资源
最近更新 更多