什么是“android:allowBackup”?

自新ADT预览版(版本21)以来,他们有一个新的lint警告,告诉我清单文件(应用程序标签)上的下一件事:

应该明确地将android:allowBackup设置为true或false(默认情况下为true,并且可能会对应用程序的数据产生一些安全隐患)

官方网站上 ,他们写道:

一些新的检查:你必须明确地决定你的应用程序是否允许备份和标签检查。 有一个用于设置库路径的新命令行标志。 编辑时增量皮棉分析的许多改进。

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

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


清单的备份有两个概念:

  • “机器人:allowBackup”允许备份和通过ADB恢复, 如下所示:
  • 是否允许应用程序参与备份和恢复基础结构。 如果此属性设置为false,则即使通过全系统备份,也不会执行应用程序的备份或恢复,否则会导致所有应用程序数据通过adb保存。 此属性的默认值为true。

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

    但是,我认为这不是问题,因为大多数用户不知道adb是什么,如果他们这样做,他们也会知道如何对设备进行根目录。 ADB功能只有在设备启用了调试功能的情况下才会起作用,并且这需要用户启用它。

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

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

  • “机器人:backupAgent”允许使用的备份和恢复云的功能,因为这里这里所示:
  • 实现应用程序的备份代理的类的名称,它是BackupAgent的一个子类。 属性值应该是完全限定的类名(例如“com.example.project.MyBackupAgent”)。 但是,如果名称的第一个字符是句点(例如,“.MyBackupAgent”),则会将其附加到元素中指定的包名称。 没有默认值。 该名称必须指定。

    这不是一个安全问题。


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

    如果您通过Eclipse使用lint,请打开lint警告视图,您可以在其中选择lint错误并查看更长的解释,或者在错误行上调用quickfix(Ctrl-1),其中一个建议是“Explain这个问题“,这也会出现更全面的解释。 如果您未使用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属性确定是否可以备份和恢复应用程序的数据。 这里记录在案。

    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)`"
    

    点击这里查看更多信息


    从这个意义上来说,备份真的意味着:

    Android的备份服务允许您将持久性应用程序数据复制到远程“云”存储,以便为应用程序数据和设置提供还原点。 如果用户执行出厂重置或转换为新的Android设备,系统会在重新安装应用程序时自动恢复您的备份数据。 这样,您的用户就不需要重现以前的数据或应用程序设置。

    〜取自http://developer.android.com/guide/topics/data/backup.html

    您可以在此处以开发者身份注册此备份服务:https://developer.android.com/google/backup/signup.html

    可以备份的数据类型是文件,数据库,sharedPreferences,缓存和lib。 这些通常存储在设备的/data/data/[com.myapp]目录中,该目录是读保护的,除非拥有root权限,否则无法访问。

    更新 :您可以在BackupManager的api文档中看到此标志: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。 COM /引导/主题/数据/ backup.html

    链接地址: http://www.djcxy.com/p/25487.html

    上一篇: What is "android:allowBackup"?

    下一篇: BackupAgent fails after package rename