android - 什么是 "android:allowBackup"?

标签 android adt compiler-warnings android-lint android-backup-service

自从new ADT preview version (version 21) ,他们有一个新的 lint 警告,告诉我 list 文件中的下一件事(在应用程序标记中):

Should explicitly set android:allowBackup to true or false (it's true by default, and that can have some security implications for the application's data)

official website ,他们写道:

A couple of new checks: you must explicitly decide whether your app allows backups, and a label check. There's a new command line flag for setting the library path. Many improvements to the incremental lint analysis while editing.

这是什么警告?什么是备份功能,如何使用?

另外,为什么警告告诉我它有安全隐患?禁用此功能有哪些优缺点?


list 的备份有两个概念:

  • "android:allowBackup"允许通过adb进行备份和恢复,如图here :

Whether to allow the application to participate in the backup and restore infrastructure. If this attribute is set to false, no backup or restore of the application will ever be performed, even by a full-system backup that would otherwise cause all application data to be saved via adb. The default value of this attribute is true.

这被认为是一个安全问题,因为人们可以通过 ADB 备份您的应用程序然后将您应用的私有(private)数据导入他们的 PC。

但是,我认为这不是问题,因为大多数用户不知道 adb 是什么,如果他们知道,他们也会知道如何 root 设备。 ADB 功能只有在设备启用了调试功能时才能工作,这需要用户启用它。

因此,只有将设备连接到 PC 并启用调试功能的用户才会受到影响。如果他们的 PC 上有使用 ADB 工具的恶意应用程序,则可能会出现问题,因为该应用程序可以读取私有(private)存储数据。

我认为 Google 应该在开发者类别中添加一个默认禁用的功能,以允许通过 ADB 备份和恢复应用程序。

  • “android:backupAgent”允许使用云的备份和恢复功能,如图herehere :

The name of the class that implement's the application's backup agent, a subclass of BackupAgent. The attribute value should be a fully qualified class name (such as, "com.example.project.MyBackupAgent"). However, as a shorthand, if the first character of the name is a period (for example, ".MyBackupAgent"), it is appended to the package name specified in the element. There is no default. The name must be specified.

这不是安全问题。

最佳答案

对于此 lint 警告,与所有其他 lint 警告一样,请注意,您可以获得比单行错误消息中的内容更完整的解释;您无需在网上搜索更多信息。

如果您通过 Eclipse 使用 lint,请打开 lint 警告 View ,您可以在其中选择 lint 错误并查看更长的说明,或者在错误行调用快速修复 (Ctrl-1),然后建议是“解释这个问题”,它也会弹出更完整的解释。如果您不使用 Eclipse,则可以从 lint (lint --html <filename>) 生成 HTML 报告,其中包括警告旁边的完整解释,或者您可以要求 lint 解释特定问题。例如,与 allowBackup 相关的问题具有 ID AllowBackup (显示在错误信息的末尾),所以更完整的解释是:

$ ./lint --show AllowBackup
AllowBackup
-----------
Summary: Ensure that allowBackup is explicitly set in the application's
manifest

Priority: 3 / 10
Severity: Warning
Category: Security

allowBackup属性确定是否可以备份和恢复应用程序的数据,如文档 here 所述.

By default, this flag is set to true. When this flag is set to true, application data can be backed up and restored by the user using adb backup and adb restore.

This may have security consequences for an application. adb backup allows users who have enabled USB debugging to copy application data off of the device. Once backed up, all application data can be read by the user. adb restore allows creation of application data from a source specified by the user. Following a restore, applications should not assume that the data, file permissions, and directory permissions were created by the application itself.

Setting allowBackup="false" opts an application out of both backup and restore.

To fix this warning, decide whether your application should support backup and explicitly set android:allowBackup=(true|false)

点击这里查看More information

关于android - 什么是 "android:allowBackup"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12648373/

相关文章:

eclipse - Eclipse编译器错误/警告首选项

android - Return 语句返回 null 而不是给定值

java - 将 AsyncTasks 的结果放在一起

android - HttpUrlConnection.connect失败

android - 我的 9 补丁图像停止工作

android - 将 jar 移动到 eclipse 中的 libs 文件夹

c - 警告 'return' 无值,函数返回非 void - 它应该返回什么?

android - 图像的 imageButton 边框

android - 当我加载 ADT 时为什么会收到错误 "The Android SDK requires Android Developer Toolkit version XX.X.X or above?"

compiler-warnings - 一般来说,我应该将编译器设置为将警告视为错误吗?