Облачный бэкап данных при помощи Android Backup Service
Google предлагает специальный механизм сохранения и восстановления данных с помощью облачных технологий. Стоит отметить, что не все устройства могут поддерживать эту технологию. При этом ваше приложение будет работать без ошибок и пользователь не заметит ошибок, но данные не будут сохраняться и, соответственно, восстанавливаться.
Сам я не тестировал данный способ в боевых условиях, поэтому поместил статью в раздел теории. Сам пример очень простой.
Для начала следует зарегистрировать ваше приложение на странице Backup Service. Вам нужно согласиться с условиями использования и ввести имя пакета вашего приложения. Взамен вам выдадут ключ, который нужно поместить в секцию application манифеста.
А для самого тега application в атрибуте backupAgent нужно указать имя класса, который мы сейчас создадим.
Атрибут restoreAnyVersion не является обязательным.
Далее создаётся новый класс на основе BackupAgentHelper, в котором вы указываете, какие данные следует сохранить — базу данных, настройки.
Осталось где-нибудь в вашей активности определить место для вызова метода, когда меняются данные.
Теперь осталось запустить приложение, произвести какие-нибудь действия, приводящие к созданию бэкапа, удалить приложение, установить его снова и убедиться, что данные восстановились. При этому мы только запрашиваем операцию на бэкап. Самостоятельно влиять на восстановление данных мы не можем. Сервис автоматически определить момент, когда следует восстановить данные, например, при переустановке приложения или установке приложения на новом устройстве.
Кроме вспомогательного класса BackupAgentHelper можно использовать класс BackupAgent, если вам нужны дополнительные возможности.
В документации есть отдельная страница на эту тему — Data Backup | Android Developers
Источник
Что такое «android: allowBackup»?
Так как новая версия предварительного просмотра ADT (версия 21), у них есть новое предупреждение о линге, которое сообщает мне следующее в файле манифеста (в теге приложения):
Должен явно установить android: allowBackup в true или false (по умолчанию это значение true, и это может иметь некоторые последствия для безопасности для данных приложения)
Несколько новых проверок: вы должны явно решить, может ли ваше приложение делать резервные копии и проверять метки. Там новый флаг командной строки для установки пути к библиотеке. Многие улучшения в инкрементном анализе lint при редактировании.
Что это за предупреждение? Что такое функция резервного копирования и как ее использовать?
Кроме того, почему предупреждение говорит мне, что оно имеет последствия для безопасности? Каковы недостатки и преимущества отключения этой функции?
Существует два понятия резервного копирования для манифеста:
- «android: allowBackup» позволяет выполнять резервное копирование и восстановление через adb, как показано здесь:
Разрешить приложению участвовать в резервном копировании и восстановления инфраструктуры. Если для этого атрибута установлено значение false, резервная копия или восстановление приложения будет выполняться даже полнофункциональная резервная копия, которая в противном случае привела бы к сохраняться через adb. Значение по умолчанию для этого атрибута равно true.
Это считается проблемой безопасности, потому что люди могут создавать резервные копии вашего приложения через ADB, а затем получать личные данные вашего приложения на свой ПК.
Однако, я думаю, что это не проблема, так как большинство пользователей не знают, что такое adb, и если они это сделают, они также узнают, как запустить устройство. Функции ADB будут работать только в том случае, если устройство имеет функцию отладки, и для этого требуется, чтобы пользователь включил ее.
Таким образом, пострадают только пользователи, подключающие свои устройства к ПК и включающие функцию отладки. Если у них есть вредоносное приложение на своем ПК, которое использует инструменты ADB, это может быть проблематично, поскольку приложение может читать данные частного хранилища.
Я думаю, Google должен просто добавить функцию, которая по умолчанию отключена в категории разработчиков, чтобы разрешить резервное копирование и восстановление приложений через ADB.
- «android: backupAgent» позволяет использовать функцию резервного копирования и восстановления облака, как показано здесь и здесь:
Имя класса, реализующего агент резервного копирования приложения, подкласс BackupAgent. Значение атрибута должно быть полностью (например, «com.example.project.MyBackupAgent» ). Однако, как сокращенное обозначение, если первый символ имени является период (например, «.MyBackupAgent» ), он добавляется к пакету имя, указанное в элементе. По умолчанию нет. имя должно быть указано.
Это не проблема безопасности.
ОТВЕТЫ
Ответ 1
В этом предупреждении lint и для всех других предупреждений lint обратите внимание, что вы можете получить более полное объяснение, чем то, что находится в сообщении об одной строке; вам не нужно искать в Интернете дополнительную информацию.
Если вы используете lint через Eclipse, либо откройте представление предупреждений lint, где вы можете выбрать ошибку lint и увидеть более подробное объяснение, либо вызвать quickfix (Ctrl-1) в строке ошибки и одно из предложений «Объясните эту проблему», которая также будет раскрывать более полное объяснение. Если вы не используете Eclipse, вы можете создать отчет HTML из lint (lint — html), который включает полные объяснения рядом с предупреждениями, или вы можете попросить lint объяснить конкретную проблему. Например, проблема, связанная с allowBackup, имеет идентификатор «AllowBackup» (отображается в конце сообщения об ошибке), поэтому более полное объяснение:
$./lint —show AllowBackup
AllowBackup
Сводка: убедитесь, что allowBackup явно установлен в приложении манифеста
Приоритет: 3/10 Уровень важности: предупреждение Категория: Безопасность
Атрибут allowBackup определяет, могут ли резервные копии данных приложения и восстановлено. Это документировано здесь.
По умолчанию этот флаг имеет значение true. Если для этого флага установлено значение true, данные приложения могут быть скопированы и восстановлены пользователем с помощью резервного копирования adb и восстановление adb.
Это может иметь последствия безопасности для приложения. Резервное копирование adb позволяет пользователи, которые включили USB-отладку для копирования данных приложения из устройство. После резервного копирования все данные приложения могут быть прочитаны пользователем. ADB restore позволяет создавать данные приложения из источника, указанного в пользователь. После восстановления приложения не должны предполагать, что данные, файл разрешения и разрешения каталога были созданы приложением сам по себе.
Настройка allowBackup=»false» выбирает приложение из резервной копии и восстановить.
Чтобы устранить это предупреждение, решите, должно ли ваше приложение поддерживать резервное копирование, и явно установить android:allowBackup=(true|false) «
Нажмите здесь для Подробнее
Ответ 2
Вот что такое резервное копирование в этом смысле действительно означает:
Служба резервного копирования Android позволяет копировать данные постоянных приложений в удаленное облачное хранилище, чтобы обеспечить точку восстановления данных и настроек приложения. Если пользователь выполняет factory reset или конвертируется в новое устройство на базе Android, система автоматически восстанавливает ваши резервные данные при повторной установке приложения. Таким образом, вашим пользователям не нужно воспроизводить свои предыдущие данные или настройки приложения.
Вы можете зарегистрироваться для этой службы резервного копирования в качестве разработчика здесь: https://developer.android.com/google/backup/signup.html
Тип данных, которые могут быть скопированы, — это файлы, базы данных, sharedPreferences, cache и lib. Они обычно хранятся в вашем каталоге /data/data/ [com.myapp], который защищен от чтения и недоступен, если у вас нет привилегий root.
UPDATE: Вы можете увидеть этот флаг, указанный в файле BackupManager api doc: BackupManager
Ответ 3
Это явно не упоминается, но, основываясь на следующих документах, я думаю, что подразумевается, что приложение должно объявлять и внедрять BackupAgent, чтобы резервное копирование данных работало даже в том случае, когда allowBackup установлен в true ( который является значением по умолчанию).
Ответ 4
Когда мы должны установить android: allowBackup = false
Вам не нужен root для резервного копирования данных с устройства Android на ПК, вам нужен только физический доступ и включение отладки в меню разработчика. Это позволяет копировать данные из внутреннего хранилища приложения, которое может содержать конфиденциальную информацию, которую вы не хотите позволять кому-то украсть, например токен доступа к facebook.
Я согласен с тем, что в большинстве случаев это довольно тривиально, но есть некоторые случаи, для которых требуется дополнительный уровень защиты от атак, в которых задействован физический доступ.
Обратите внимание, что для того, чтобы обойти это, вам необходимо укоротить телефон, и в этом случае конфиденциальные данные во внутренней памяти будут удалены, когда произойдет factory reset.
Ответ 5
рекомендуется запретить пользователям резервировать приложение, если оно содержит конфиденциальные данные. Имея доступ к файлам резервных копий, вы можете изменить содержимое приложения на ненагруженном устройстве.
Решение — используйте android:allowBackup=»false» в файле манифеста.
Источник
Что такое «Android: allowBackup»?
Поскольку новая предварительная версия ADT (версия 21) , у них есть новое предупреждение о задержке, которое сообщает мне следующее о файл манифеста (в теге приложения):
Должен явно установить Android: allowBackup в значение true или false (по умолчанию это true, что может иметь некоторые последствия для безопасности данных приложения)
Пара новых проверок: вы должны явно решить, позволяет ли ваше приложение создавать резервные копии, и проверить метку. Есть новый флаг командной строки для установки пути к библиотеке. Много улучшений в инкрементальном анализе ворса при редактировании.
Что это за предупреждение? Что такое функция резервного копирования и как ее использовать?
Кроме того, почему предупреждение говорит мне, что оно имеет последствия для безопасности? Каковы недостатки и преимущества отключения этой функции?
Для манифеста есть две концепции резервного копирования:
- «Android: allowBackup » позволяет выполнять резервное копирование и восстановление через adb, как показано здесь :
Разрешить ли приложению участвовать в инфраструктуре резервного копирования и восстановления. Если для этого атрибута задано значение false, резервное копирование или восстановление приложения никогда не будет выполняться, даже если резервное копирование всей системы приведет к сохранению всех данных приложения через adb. Значение этого атрибута по умолчанию — true.
Это считается проблемой безопасности, потому что люди могут сделать резервную копию вашего приложения через ADB , а затем получить личные данные вашего приложения на свой ПК.
Тем не менее, я думаю, что это не проблема, так как большинство пользователей не знают, что такое adb, и если они знают, они также будут знать, как получить root права на устройство. Функции ADB будут работать только в том случае, если на устройстве включена функция отладки, и для этого требуется, чтобы пользователь включил ее.
Таким образом, будут затронуты только пользователи, которые подключат свои устройства к ПК и включат функцию отладки. Если на их ПК установлено вредоносное приложение, использующее инструменты ADB, это может быть проблематично, поскольку приложение может считывать данные частного хранилища.
Я думаю, что Google должен просто добавить функцию, которая по умолчанию отключена, в категории разработчиков, чтобы разрешить резервное копирование и восстановление приложений через ADB.
- «Android: backupAgent » позволяет использовать функцию резервного копирования и восстановления в облаке, как показано здесь и здесь :
Источник
Что такое «android: allowBackup»?
Так как новая версия предварительного просмотра ADT (версия 21), у них есть новое предупреждение о линге, которое сообщает мне следующее в файле манифеста (в теге приложения):
Должен явно установить android: allowBackup в true или false (по умолчанию это значение true, и это может иметь некоторые последствия для безопасности для данных приложения)
Несколько новых проверок: вы должны явно решить, может ли ваше приложение делать резервные копии и проверять метки. Там новый флаг командной строки для установки пути к библиотеке. Многие улучшения в инкрементном анализе lint при редактировании.
Что это за предупреждение? Что такое функция резервного копирования и как ее использовать?
Кроме того, почему предупреждение говорит мне, что оно имеет последствия для безопасности? Каковы недостатки и преимущества отключения этой функции?
Существует два понятия резервного копирования для манифеста:
- «android: allowBackup» позволяет выполнять резервное копирование и восстановление через adb, как показано здесь:
Разрешить приложению участвовать в резервном копировании и восстановления инфраструктуры. Если для этого атрибута установлено значение false, резервная копия или восстановление приложения будет выполняться даже полнофункциональная резервная копия, которая в противном случае привела бы к сохраняться через adb. Значение по умолчанию для этого атрибута равно true.
Это считается проблемой безопасности, потому что люди могут создавать резервные копии вашего приложения через ADB, а затем получать личные данные вашего приложения на свой ПК.
Однако, я думаю, что это не проблема, так как большинство пользователей не знают, что такое adb, и если они это сделают, они также узнают, как запустить устройство. Функции ADB будут работать только в том случае, если устройство имеет функцию отладки, и для этого требуется, чтобы пользователь включил ее.
Таким образом, пострадают только пользователи, подключающие свои устройства к ПК и включающие функцию отладки. Если у них есть вредоносное приложение на своем ПК, которое использует инструменты ADB, это может быть проблематично, поскольку приложение может читать данные частного хранилища.
Я думаю, Google должен просто добавить функцию, которая по умолчанию отключена в категории разработчиков, чтобы разрешить резервное копирование и восстановление приложений через ADB.
- «android: backupAgent» позволяет использовать функцию резервного копирования и восстановления облака, как показано здесь и здесь:
Источник