Нет ничего нового в том, что можно использовать несколько устройств Android с одной учетной записью Google . Включение нового устройства в первый раз спрашивает, хочет ли он хранить свои данные в Google, который затем всегда будет синхронизировать «некоторые вещи» с серверами Google, в основном
Подробности можно найти в Личном кабинете Google . Соответствующие вопросы здесь, охватывающие эти проблемы, включают:
Developers API в Google Backup дает некоторое дополнительное представление о том, как должны работать средства резервного копирования (и несколько вопросов здесь показывают, как это работает на самом деле, то есть иногда работает, иногда лишь частично, а иногда и вовсе). Помимо надежности и того факта, что не все хотят, чтобы его личные данные находились в облаке (и даже упомянутая ссылка API 2 предупреждает: Android не дает гарантий безопасности ваших данных при использовании резервного копирования. Вы всегда должны быть осторожны при использовании резервного копирования для хранения конфиденциальных данных). данные, такие как имена пользователей и пароли. ), мой главный вопрос:
Дело в том, что если у вас есть несколько устройств, они часто используются для определенных задач, поэтому вам не нужно все на всех устройствах. Поскольку я не видел способа выбрать, какие данные резервировать (например, исключить те «конфиденциальные данные», о которых нас предупреждали: пароли WiFi относятся к этой категории), я предполагаю, что при восстановлении тоже нет выбора? Итак, как это обрабатывается?
Служба резервного копирования Android имеет концепцию, называемую набором : набор всех данных, зарезервированных с одного устройства (на одном транспорте , но это деталь). Каждый набор идентифицируется уникальной строкой, такой как IMEI на устройстве. При резервном копировании приложения (или списка установленных приложений) данные его резервной копии попадают в набор, связанный с устройством, с которого выполняется резервное копирование. Все наборы по-прежнему привязаны к учетной записи Google пользователя. Если вы очистите свое устройство и продадите его кому-то другому, он не сможет получить доступ к набору этого устройства, если не войдет в вашу учетную запись Google.
Когда приложение установлено или на устройстве восстанавливается список приложений, система резервного копирования сначала ищет в наборе этого устройства резервные данные для этого пакета. Если он ничего не находит (либо потому, что это совершенно новое устройство без резервных копий данных, либо потому, что этот пакет никогда не устанавливался на этом устройстве), он расширит поиск до других наборов. (Если есть выбор, будет использоваться последний набор, который использовался для полного восстановления устройства.)
Таким образом, когда вы настраиваете новое устройство, оно восстанавливает список приложений из резервной копии старого устройства и каждое приложение из резервной копии старого устройства. Если у вас было приложение, установленное на одном устройстве, и вы устанавливаете его на другое устройство, приложение будет восстановлено с данными со старого устройства. В любом случае данные теперь резервируются в наборе нового устройства, что означает, что данные резервного копирования с двух устройств теперь разделены.
После того, как вы восстановите заводские настройки устройства, оно будет восстановлено из последней резервной копии этого устройства, если она есть, и, если это не удастся, из резервной копии какого-либо другого устройства, если она есть, но с этого момента оно начнет создавать свой собственный набор. Вот почему два устройства Налума не видят резервные копии приложений друг друга: каждое из них восстанавливается из своих последних резервных копий.
Этот механизм не имеет документации для пользователя, поскольку он должен автоматически выполнять правильные действия, но код доступен .
bmgr
: основное использованиеКак обнаружил Иззи, bmgr
инструмент дает вам некоторый контроль над этим процессом. Он предназначен для помощи программистам в тестировании и отладке интеграции резервного копирования в их приложениях. Вы можете использовать этот инструмент adb shell
для запуска резервного копирования и восстановления выбранных пакетов, очистки резервных копий данных пакетов и даже восстановления всего устройства.
Не пытайтесь использовать его в оболочке на устройстве, кроме как root : вам нужен системный уровень android.permission.BACKUP
, чтобы делать с ним что-нибудь интересное.
Вы можете заставить приложение немедленно обновить свои резервные данные:
bmgr backup com.shadowburst.showr
bmgr run
(или любое другое имя пакета приложения). Обычно в этом нет необходимости, так как приложения запрашивают свои собственные резервные копии всякий раз, когда их данные изменяются, но это позволяет вам обойти плохо написанное приложение. Чтобы восстановить один пакет из резервной копии данных, по умолчанию будет выбрано:
bmgr restore com.shadowburst.showr
но опять же, это будет делать только то, что устройство будет делать само по себе, поэтому вам не нужно его использовать. Также обратите внимание, что устройство уже должно быть установлено, чтобы это работало.
Теперь о вещах, которые система резервного копирования не будет делать во включенном состоянии. Чтобы узнать, какие наборы резервных копий доступны:
bmgr list sets
и вы получите такой вывод:
3ff7800e963f25c5 : manta
3f0e5c90a412cca7 : manta
3dd65924a70e14c8 : TF101
3baa67e9ce029355 : m0
64-битное шестнадцатеричное число слева — это токен . Это понадобится вам через минуту. То, что справа, — это (относительно) понятное имя для устройства, которому принадлежит набор. Например, manta — это кодовое название nexus-10 ; TF-101 относится к оригинальному asus-eee-pad-transformer . Как только вы определились, какой набор вам нужен, вы можете восстановить приложение из этого набора, используя его токен:
bmgr restore 3ff7800e963f25c5 com.shadowburst.showr
Вы можете добавить больше имен пакетов в конец команды, чтобы восстановить несколько пакетов одновременно, или вы можете не указывать имя пакета (только токен), чтобы восстанавливать каждое приложение с данными в этом наборе (т . восстановить).
Наконец, вы можете стереть данные приложения из текущего набора:
bmgr wipe com.shadowburst.showr
Это заставит его следующую операцию резервного копирования начать с нуля. Это может быть полезно после удаления приложения, если ошибка в приложении повредила данные его резервной копии, и вы не хотите, чтобы они восстанавливались.
Вы не можете заставить устройство начать запись в другой набор и не можете стереть весь набор.
Следующее, безусловно, не является ответом на вопрос, но может пролить свет на некоторые детали:
Хотя API в основном предназначен для разработчиков, есть несколько фактов, которые мы могли бы извлечь для нашего случая. В следующем списке курсивом отмечены цитаты из документации по API.
onRestore()
метод вашего агента резервного копирования. adb shell bmgr backup <package>
com.android.providers.settings
, для системных настроек или com.android.providers.telephony
для SMS / MMS и т. д.?)bmgr run
командуadb shell bmgr restore <package>
Короче говоря: bmgr
может использоваться для запуска резервного копирования для приложений, поддерживающих Google Backup, которые вы установили, и может запускать восстановление данных для того же самого. Его нельзя использовать для запуска полного восстановления — по крайней мере, это не задокументировано здесь.
Еще немного информации о резервном копировании Google. Когда я прошил кастомную прошивку, приложения не восстановились, как я ожидал. В «Настройки» -> « Резервное копирование и сброс » показывалось «Резервное копирование в частный кеш только для отладки» и bmgr list sets
не давало никаких результатов.
Я решил свою проблему, выполнив следующие шаги adb shell
:
$ bmgr transport com.google.android.backup/.BackupTransportService
$ bmgr list sets 3a0a00a516a1daf1 : LT22i
Однако этого было недостаточно. Не начал установку приложений. Это показало причину:
$ bmgr list sets 3179e4ab08d74930 : LT22i 3a0a00a516a1daf1 : LT22i
он создал новый набор, хотя IMEI, очевидно, был тем же самым. Во всяком случае, это было исправлением:
$ bmgr restore 3a0a00a516a1daf1
(идентификатор, который он показал в первый раз)
$ bmgr run
(чтобы быть уверенным)
. Затем он начал загружать приложения.
По моему опыту, у каждого устройства есть собственная резервная копия. Я понял это из-за возни со своим Nexus 7 и Galaxy S II. Кроме этого я не знаю.
Программы:
В моем Nexus 7 есть приложения Caustic , DC Comics и 20 Minute Meals , которые после сброса настроек моего Galaxy S II не устанавливаются на Galaxy S II.
В моем Galaxy S II есть эти приложения DriveDroid и Human Japanese , которые после сброса настроек моего Nexus 7 не устанавливаются на Nexus 7.
Приложения совместимы с обоими устройствами, поэтому несовместимость не может быть причиной того, что они не могут быть установлены на соответствующем другом устройстве.
Данные:
Что касается Wi-Fi и других данных, я не уверен, так как каждый раз, когда я устанавливал Wi-Fi на каждом устройстве во время первоначальной настройки Android. Что касается других учетных записей Google, которые у вас могут быть, похоже, они не копируются на каждое устройство, и то же самое относится к учетным записям Skype и GitHub на каждом устройстве.
Я сделал резервную копию, используя как встроенную резервную копию Google, так и резервную копию Helium, прежде чем стереть и установить пользовательское ПЗУ Carbon на Nexus 4 (со склада KitKat). Ожидал, что Google восстановит приложения, настройки и т. д., как это было раньше, когда я восстановил этот телефон, но без радости.
Пробовал и Helium, тоже без радости, даже при ручном восстановлении «Загрузка с ПК» - сказал «восстановлено», но данных Wi-Fi и приложений по-прежнему нет.
Запуск bmgr restore <xxx>
полного восстановления и bmgr run
, как подробно описано выше, запустил полное восстановление Google и сработал - спасение для меня!
Google мог бы приложить больше усилий, особенно если они хотят конкурировать с идеей Apple «просто работает»… Тем не менее, мне нравится взламываемость Android, несмотря на его подводные камни!
Иззи
crdx
Иззи
Поток
Иззи