2015-03-14 1 views
2

У меня есть инструкции Google для резервного копирования данных с помощью резервного копирования api. И я пишу простой тест program, чтобы проверить, как он работает (MainActivity + BackupAgent для общих настроек).Работает ли резервная копия android на реальных устройствах?

На AVD-эмуляторе с различными API-интерфейсами все работает отлично, но на реальном устройстве я не могу получить данные после переустановки приложения.

Я проверил его по-разному:

  • Google Рекомендации от backup data
  • ADB оболочки bmgr команды/ожидание 24+ часов для события автоматического резервного копирования
  • транспортирует com.google.android.gms/.backup.BackupTransportService and android/com.android.internal.backup.LocalTransport
  • дополнительная команда «bmgr restore»/дополнительный запрос вызоваRestore()
  • usin г FileBackupHelper/SharedPreferencesBackupHelper
  • различных устройства Nexus4, Nexus7, Samsung Galaxy, Acer A501 (каждое устройство имеет все настройки "Резервное копирование & сброса" на)
  • установить приложение из Android Studio/установки подписанной APK из SDCard/я даже отправил свой приложение на Google Play и попытался установить приложение оттуда
  • деинсталлировать applicatation с помощью ADB/с applciations устройства/вытереть устройство

в LogCat я могу видеть, что мой пакет находится в списке резервных копий системы и BackupHelper.onCreate () называется.

03-14 18:29:14.716 16355-16355/com.jh.testmybackup D/BACKUP﹕ ThebackupAgent.onCreate() 
    03-14 18:29:14.716 16355-16367/com.jh.testmybackup V/BackupServiceBinder﹕ doBackup() invoked 
    03-14 18:29:14.716 16355-16367/com.jh.testmybackup D/BackupHelperDispatcher﹕ handling existing helper 'com.jh.testmybackup' [email protected] 
    03-14 18:29:14.716  311-407/? D/PerformBackupTask﹕ starting agent for backup of BackupRequest{pkg=com.jh.testmybackup} 
    03-14 18:29:14.716  311-407/? D/BackupManagerService﹕ awaiting agent for ApplicationInfo{42c80f98 com.jh.testmybackup} 
    03-14 18:29:14.716 311-27709/? D/BackupManagerService﹕ agentConnected pkg=com.jh.testmybackup [email protected] 
    03-14 18:29:14.716  311-407/? I/BackupManagerService﹕ got agent [email protected] 
    03-14 18:29:14.716  311-407/? D/PerformBackupTask﹕ invokeAgentForBackup on com.jh.testmybackup 
    03-14 18:29:15.176  311-407/? I/PerformBackupTask﹕ Backup pass finished. 

Но ничего не помогает. После переустановки приложения я не получаю свои данные.

В конце концов, я попытался найти информацию об этой проблеме, но не нашел решения. Я нашел несколько примеров приложений (stackoverflow.com/questions/12402749/examples-of-application-used-android-backup-services), и не пытался восстановить их на своих устройствах, и они также не восстанавливают ничего после переустанавливать.

Я нахожу себя очень глупым. Я единственный, у кого такая проблема?

+0

Вы пытаетесь сделать резервную копию на приложении, подписанное с тот же ключ? Я думаю (но не знаю), что файлы, хранящиеся для одного ключа, соленые с указанным ключом, и из-за этого вы не можете перекрестно передавать данные из двух разных ключей-подписанных-apks. Я не знаю, было ли это то, что вы делали, но дружеские хедз-ап, это все. – MeetTitan

+0

@MeetTitan Я попытался выполнить полный тестовый цикл (установить - установить настройки - вызвать dataChanged - запустить команды bmgr - удалить - установить еще раз - попробовать прочитать настройки) для того же .apk файла –

+1

Получил ли вы ответ на этот вопрос? Я реализовал API резервного копирования, и я заметил, что он работает на эмуляторах и устройствах Motorola, но не на устройствах Samsung ... –

ответ

0

Проверьте файл манифеста, чтобы узнать, есть ли в приложении у вас андроид: allowBackup = "true", а также android: backupAgent, имеющий правильный путь к вашим проектам FileBackupAgent. Кроме того, ваши метаданные должны иметь ваш зарегистрированный ключ, такой как android: value = "your-registerd-key"

Убедитесь, что ваше устройство подключено к сети Wi-Fi. Кроме того, убедитесь, что в настройках вашего устройства у параметра «Резервное копирование и сброс» есть флажок «Резервное копирование моих данных», а «Резервная учетная запись» имеет действительную учетную запись gmail и «Автоматическое восстановление».

Кроме того, в окне командной строки, параметры транспорта должны быть: * com.google.android.backup/.BackupTransportService

Вы можете увидеть, набрав: bmgr список транспортов Если транспорт установлен на местном, затем введите: bmgr transport com.google.android.backup /.BackupTransportService

Другая bmgr команды использовать для «удара» начать резервное копирование в https://www.google.com/settings/dashboard являются:

bmgr enabled 
bmgr wipe "your package in your manifest file" 
bmgr backup "your package in your manifest file" 
bmgr run 

Обновите https://www.google.com/settings/dashboard, чтобы увидеть последнюю резервную метку времени

Смежные вопросы