1. 程式人生 > >AndroidManifest設定android:allowBackup="false"報錯

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"