Héctor
Mi aplicación actual de Android está dirigida a mayores de 12 años.
No quiero permitir la copia de seguridad de ningún tipo y actualmente tengo esta configuración de manifiesto:
android:allowBackup="false"
android:fullBackupContent="false"
Sin embargo, el android:allowBackup="false"
configuración da la siguiente advertencia ahora:
El atributo android:allowBackup está obsoleto en Android 12 y versiones posteriores y es posible que se elimine en versiones futuras. Considere agregar el atributo android:dataExtractionRules especificando un recurso @xml que configura copias de seguridad en la nube y transferencias de dispositivos en Android 12 y versiones posteriores.
He mirado los ejemplos para android:dataExtractionRules
xml y ninguno de ellos muestra cómo configurar el equivalente de allowBackup="false"
.
¿Qué me estoy perdiendo?
¿Es posible lograr allowBackup="false"
con el uso de android:dataExtractionRules
xml?
Vadik
Agregar dataExtractionRules
atributo a su archivo AndroidManifest.xml con una referencia a reglas_de_extracción_de_datos.xml expediente:
<application
android:allowBackup="false"
android:fullBackupContent="false"
android:dataExtractionRules="@xml/data_extraction_rules"
...>
Luego, excluya todos los dominios posibles para las copias de seguridad en la nube y d2d transferencias, actualizar o crear un archivo aplicación/src/main/res/xml/data_extraction_rules.xml:
<?xml version="1.0" encoding="utf-8"?>
<data-extraction-rules>
<cloud-backup>
<exclude domain="root" />
<exclude domain="file" />
<exclude domain="database" />
<exclude domain="sharedpref" />
<exclude domain="external" />
</cloud-backup>
<device-transfer>
<exclude domain="root" />
<exclude domain="file" />
<exclude domain="database" />
<exclude domain="sharedpref" />
<exclude domain="external" />
</device-transfer>
</data-extraction-rules>
los dataExtractionRules
atributo está disponible para API 31 (Android 12) y superior. Mantener allowBackup
y fullBackupContent
atributos para versiones de Android anteriores a la API 31.
Nota a tal vez silenciar”
Attribute dataExtractionRules is only used in API level 31 and higher (current min is 19)
“Advertencia, contools:targetApi="s"
atributo también (porque las plataformas más antiguas simplemente ignoran los atributos de manifiesto que no admiten, y la advertencia es inútil).
-
los documentos diga “Si especifica un
<include>
elemento, el sistema ya no incluye ningún archivo de forma predeterminada y hace una copia de seguridad solo de los archivos especificados”. ¿Alguien intentó algo como<device-transfer><include domain="" tools:ignore="FullBackupContent" /></device-transfer>
?– gmk57
20 de julio a las 12:49
-
domain
— Especifica la ubicación del recurso. Los valores válidos para este atributo incluyen los siguientes:root
,file
,database
,sharedpref
,external
. No estoy seguro de que el valor vacío sea válido. los documentos no especifique el comportamiento de un valor vacío.– Vadik
3 ago a las 23:19
-
@CodingBruceLee esta es una gran pregunta: no se dice nada sobre lo que sucede sin una ruta, por lo que una mejor respuesta sería:
-backup-contenido> – cansancio
11 de agosto a las 21:39
-
Además, no veo en ninguna parte de los documentos que “falso” sea legítimo para fullBackupContent. Está destinado a apuntar a un archivo xml, pero de un vistazo rápido a la fuente aún puede funcionar si se coloca “falso” (o cualquier cadena que no apunte a un archivo de recursos xml analizable). Ver android.googlesource.com/platform/frameworks/base/+/master/core/…
– cansancio
11 ago a las 21:51
-
@fattire, buen punto, hay un referencia que dice que puede ser booleano. IDE también muestra valores posibles como
boolean
oreference
(cuando abro Documentación rápida, Ctrl + Q).– Vadik
11 ago a las 23:01