Начиная с новой предварительной версии ADT (версия 21) , у них есть новое предупреждение lint, в котором говорится следующее о файле манифеста (в теге приложения):
Должен явно установить для android: allowBackup значение true или false (по умолчанию это true, что может иметь некоторые последствия для безопасности данных приложения)
На официальном сайте они написали:
Пара новых проверок: вы должны явно решить, позволяет ли ваше приложение создавать резервные копии, и проверить метку. Есть новый флаг командной строки для установки пути к библиотеке. Много улучшений в инкрементальном анализе ворса при редактировании.
Что это за предупреждение? Что такое функция резервного копирования и как ее использовать?
Кроме того, почему предупреждение говорит мне, что оно имеет последствия для безопасности? Каковы недостатки и преимущества отключения этой функции?
Для манифеста есть две концепции резервного копирования:
- «android: allowBackup » позволяет выполнять резервное копирование и восстановление через adb, как показано здесь :
Разрешить ли приложению участвовать в инфраструктуре резервного копирования и восстановления. Если для этого атрибута задано значение false, резервное копирование или восстановление приложения никогда не будет выполняться, даже если выполняется резервное копирование всей системы, в противном случае все данные приложения будут сохранены через adb. Значение по умолчанию для этого атрибута - true.
Это считается проблемой безопасности, потому что люди могут сделать резервную копию вашего приложения через ADB, а затем получить личные данные вашего приложения на свой ПК.
Тем не менее, я думаю, что это не проблема, так как большинство пользователей не знают, что такое adb, и если они знают, они также будут знать, как получить root права на устройство. Функции ADB будут работать только в том случае, если на устройстве включена функция отладки, и для этого требуется, чтобы пользователь включил ее.
Таким образом, будут затронуты только пользователи, которые подключают свои устройства к ПК и включают функцию отладки. Если на их ПК установлено вредоносное приложение, использующее инструменты ADB, это может быть проблематично, поскольку приложение может считывать данные частного хранилища.
Я думаю, что Google должен просто добавить функцию, которая по умолчанию отключена, в категорию разработчиков, чтобы разрешить резервное копирование и восстановление приложений через ADB.
- «android: backupAgent » позволяет использовать функцию резервного копирования и восстановления в облаке, как показано здесь и здесь :
Имя класса, который реализует агент резервного копирования приложения, подкласс BackupAgent. Значением атрибута должно быть полное имя класса (например, «com.example.project.MyBackupAgent»). Однако для краткости, если первый символ имени является точкой (например, «.MyBackupAgent»), он добавляется к имени пакета, указанному в элементе. Там нет по умолчанию. Имя должно быть указано.
Это не проблема безопасности.
источник
Ответы:
Для этого предупреждения о задержке, как и для всех других предупреждений о задержке, обратите внимание, что вы можете получить более полное объяснение, чем то, что содержится в сообщении об ошибке в одну строку; Вам не нужно искать в Интернете для получения дополнительной информации.
Если вы используете lint через Eclipse, либо откройте представление предупреждений о lint, где вы можете выбрать ошибку lint и посмотреть более подробное объяснение, либо вызвать быстрое исправление (Ctrl-1) в строке ошибки, и одно из предложений - " Объясните эту проблему ", которая также высветит более полное объяснение. Если вы не используете Eclipse, вы можете создать HTML-отчет из lint (
lint --html <filename>
), который содержит полные объяснения рядом с предупреждениями, или вы можете попросить lint объяснить конкретную проблему. Например, проблема, связанная с,allowBackup
имеет идентификаторAllowBackup
(показанный в конце сообщения об ошибке), поэтому более полное объяснение:allowBackup
Атрибут определяет , является ли данные приложения могут быть сохранены и восстановлены, как описано здесь .Нажмите здесь для получения дополнительной информации
источник
Вот что на самом деле означает резервное копирование:
Взято с http://developer.android.com/guide/topics/data/backup.html
Вы можете зарегистрироваться для этой службы резервного копирования в качестве разработчика здесь: https://developer.android.com/google/backup/signup.html
Тип данных, для которых можно выполнить резервное копирование, - это файлы, базы данных, sharedPreferences, кеш и lib. Обычно они хранятся в каталоге /data/data/[com.myapp] вашего устройства, который защищен от чтения и недоступен, если у вас нет привилегий root.
ОБНОВЛЕНИЕ : Вы можете видеть этот флаг в списке в api doc BackupManager : BackupManager
источник
Это явно не упоминается, но, исходя из следующих документов, я думаю, что подразумевается, что приложению необходимо объявить и реализовать BackupAgent для того, чтобы резервное копирование данных работало, даже в том случае, если для allowBackup задано значение true (которое является значение по умолчанию).
http://developer.android.com/reference/android/R.attr.html#allowBackup http://developer.android.com/reference/android/app/backup/BackupManager.html http://developer.android. ком / руководство / темы / данные / backup.html
источник
Это проблема конфиденциальности . Рекомендуется запретить пользователям создавать резервные копии приложения, если оно содержит конфиденциальные данные. Имея доступ к файлам резервных копий (т. Е. Когда
android:allowBackup="true"
), можно изменять / читать содержимое приложения даже на некорневом устройстве.Решение - использовать
android:allowBackup="false"
в файле манифеста.Вы можете прочитать этот пост, чтобы получить больше информации: Взлом приложений Android с помощью методов резервного копирования
источник