2016-02-15 3 views
0

Я ищу реализовать новую функцию AutoBackup введенной в Android M, как подробно описан в документации здесь: http://developer.android.com/training/backup/autosyncapi.html#testingОСУЩЕСТВЛЕНИЮ Android M в AutoBackup Feature

я после легко восстановить базу данных игроков и общих предпочтения между установками, которые эта функция предназначена для Android. В настоящее время я не внедряю службу резервного копирования android.

Документы утверждают, что он по умолчанию включен по умолчанию, нет необходимости писать классы управления резервным копированием и т. П., По крайней мере для устройств Android M, однако я не могу заставить его работать.

abd shell bmgr enabled возвращает Backup Manager currently enabled

adb shell bmgr run не говорит ничего, но когда я затем запустить adb shell bmgr restore com.xyz.abc я получаю сказал:

Unable to restore package com.xyz.abc done

документы говорят adb shell setprop log.tag.BackupXmlParserLogging VERBOSE будет включить ведение журнала, но я могу видеть буквально никакого эффекта в терминале или в logcat, и я не могу думать о другом месте, в которое он будет входить!

Мой манифеста android:fullBackupContent="@xml/backupscheme" в теге приложений, в соответствии с Документами и backupscheme.xml содержит

<?xml version="1.0" encoding="utf-8"?> 
<full-backup-content> 
    <include domain="database" path="database.db"/> 
    <include domain="sharedpref" path="com.xyz.abc_preferences.xml"/> 
    <exclude domain="external"/> 
</full-backup-content> 

Настроек базы данных и shareed путь пришли из проверки декомпилированного приложения, и я попытался с этим xml лишился ничья - ничего не меняется.

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

Я что-то пропускаю? Есть ли какие-либо предположения, которые я делаю, что я не спросил? Почему это просто не работает ?! Там так мало информации, я действительно надеюсь, что кто-то другой реализует это и имеет некоторые рекомендации здесь!

ответ

0

Прежде всего, я не обращал внимания на фильтры ловушки! Простое отключение фильтров позволило мне увидеть сообщение об ошибке.

Первый номер был Rejecting full data backup. user has not seen up to date legal text - это, по-видимому, потому, что старые, существующие учетные записи google не выбраны для службы резервного копирования.Это немного ужасает, так как нет простого способа выбора; как на земле пользователи получат доступ к этому, я не знаю.

Чтобы устранить эту проблему, удалите с устройства все учетные записи Google, затем выключите и снова включите (если вы не перезагрузитесь, это не позволит добавленной учетной записи действовать как резервная учетная запись!).

После того, как он был перезапущен, в нем должно появиться уведомление, в котором сообщается, что учетная запись не настроена для резервного копирования: просто добавьте свою учетную запись google, включите резервные копии и, надеюсь, вы, наконец, будете работать.

Это не исправило все для меня - у меня все еще возникают проблемы с его распознаванием транспорта gms, но исходная проблема была решена.

0

Я что-то пропускаю?

Рецепт a manual backup for testing является:

adb shell setprop log.tag.BackupXmlParserLogging VERBOSE 
adb shell bmgr run 
adb shell bmgr fullbackup ... 

, где ... является применение идентификатор приложения для резервного копирования. Я не вижу, где вы запустили adb shell bmgr fullbackup.

Обратите внимание, что устройство должно иметь резервные копии в Настройках.

Ваш LogCat должен тогда содержать такие строки:

14936-14936/? D/AndroidRuntime: Calling main entry com.android.commands.bmgr.Bmgr 
800-2345/? D/BackupManagerService: fullTransportBackup() 
800-14960/? I/PFTBT: Initiating full-data transport backup of ... 
800-14961/? D/BackupManagerService: Binding to full backup agent : ... 
800-14961/? D/BackupManagerService: awaiting agent for ApplicationInfo{...} 
800-810/? D/BackupManagerService: agentConnected pkg=com.commonsware... 
800-14961/? I/BackupManagerService: got agent [email protected] 
800-14961/? I/BackupRestoreController: Getting widget state for user: 0 
800-14962/? I/file_backup_helper: Name: apps/com.commonsware.android... 
800-14962/? D/BackupManagerService: Calling doFullBackup() on com.commonsware... 
9380-9391/com.commonsware.android.backup I/file_backup_helper: Name: ... 
800-14960/? I/PFTBT: Transport suggested backoff=0 
800-14960/? I/PFTBT: Full backup completed. 
9380-9380/? I/Process: Sending signal. PID: 9380 SIG: 9 
800-2345/? D/BackupManagerService: Done with full transport backup. 

(извините, строки обрезаются, чтобы убедиться, что они подходят страницы в my book).

+0

Благодарим за отзыв. Однажды я это позвонил, потом забыл об этом в своем разочаровании, пытаясь найти все остальное. К сожалению, нет никакого смысла вызывать команды, которые вы там написали, а затем «adb shell bmgr restore ...» - просто получите сообщение «Не удалось восстановить пакет ...» без каких-либо уточнений. Команда setprop действительно ничего не делает для меня - какие записи вы видите? – Jez

+0

@Jez: см. Обновленный ответ. Вы также можете избавиться от '', поскольку то, что вам нужно, должно быть излишним, и система, похоже, не работает, если ей не нравится XML. Учитывая, что у вас есть элементы 1+ '', единственные вещи, которые будут скопированы, - это те, которые вы указали с помощью '', ничего больше, поэтому '' здесь не требуется. – CommonsWare

+0

спасибо за содержимое logcat - моя ошибка оставляла его отфильтрованным до регистрации приложений, и это поставило меня на правильный путь! Проблема, по-видимому, заключается в том, что «пользователь не видел обновленного юридического текста» - и это звучит как боль, чтобы на самом деле получить этот текст, но, по крайней мере, я знаю, что происходит не так. Спасибо вам за помощь! – Jez

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