AndroidManifest设置android:allowBackup="false"报错

概述

设置android:allowBackup="false"的必要性

Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBackup属性值[1] ,其属性值默认是true。当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。

Android属性allowBackup安全风险源于adb backup容许任何一个能够打开USB 调试开关的人从Android手机中复制应用数据到外设,一旦应用数据被备份之后,所有应用数据都可被用户读取;adb restore容许用户指定一个恢复的数据来源(即备份的应用数据)来恢复应用程序数据的创建。因此,当一个应用数据被备份之后,用户即可在其他Android手机或模拟器上安装同一个应用,以及通过恢复该备份的应用数据到该设备上,在该设备上打开该应用即可恢复到被备份的应用程序的状态。

尤其是通讯录应用,一旦应用程序支持备份和恢复功能,攻击者即可通过adb backup和adb restore进行恢复新安装的同一个应用来查看聊天记录等信息;对于支付金融类应用,攻击者可通过此来进行恶意支付、盗取存款等;因此为了安全起见,开发者务必将allowBackup标志值设置为false来关闭应用程序的备份和恢复功能,以免造成信息泄露和财产损失。

设置android:allowBackup="false"出错的情况

一般是引用的第三方开源库的AndroidManifest.xml文件设置android:allowBackup="true"了,导致两者不统一,由于第三方库大多是通过api、implementation方式引用的,无法修改其AndroidManifest.xml文件。

解决方案

在自己项目的AndroidManifest.xml中<application>标签中添加tools:replace="android:allowBackup"。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="ccccccc"
    >

    <!--设置android:allowBackup="false",保证安全
        https://blog.csdn.net/qq_31387043/article/details/51452782
        https://blog.csdn.net/bgc525725278/article/details/71171241-->
    <application
        android:name=".MyApplication"
        android:allowBackup="false"
        tools:replace="android:allowBackup"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/TranslucentTheme">


    </application>

</manifest>

同理:

同样的还有tools:replace="android:icon, android:theme,android:allowBackup" 

参考资料

Android中allowBackup属性的含义和危险性实例讲解

AndroidManifest 合并出错 tools:replace="android:allowBackup"

原文地址:https://www.cnblogs.com/whycxb/p/10096182.html