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"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM