Publicado en Android

Implementar copia de seguridad de datos automática en Android con Kotlin (AutoBackup)


Cuando un usuario compra un dispositivo nuevo o restablece el que ya tiene, es de esperar que cuando Google Play restaure su aplicación en su dispositivo durante la configuración inicial, los datos anteriores asociados con la aplicación también se restablezcan. De forma predeterminada, para ello se debe activar la copia de seguridad automática mediante la API AutoBackup – Cómo crear una copia de seguridad automática para los datos del usuario

Auto Backup API

La API Auto backup sube automáticamente los datos de la aplicación a una carpeta privada en la cuenta de Google Drive del usuario, su limite es de 25MB por aplicación, los datos subidos no se descuentan de la cuota personal que tenga el usuario contratado. Si se alcanza el límite de la cuota para una aplicación, el sistema ya no respaldrá los datos. Cuando se realiza una nueva copia de seguridad, se elimina la anterior.

Para habilitarlo se debe añadir la siguiente directiva al archivo de manifiesto AndroidManifest.xml, dentro del bloque application

android:allowBackup="true"

Iniciar el backup

El mismo sistema Android determina el momento ideono para realizar el backup, puede depender del contexto, si hay wifi, si el dispositivo no se está usando por parte del usuario (IDLE). Cada 24 horas del último backup etc..

El usuario puede forzar en realizar una copia de seguridad de los datos de la aplicación usando el menú de configuración del sistema -> Google -> Copias de seguridad y dar Realizar copia de seguridad

Personalizar ambito del backup

Por defecto la copia de seguridad incluirá todo lo que es relacionado con la app, base de datos, archivos de configuración, archivos que esten en su carpeta interna o directorio externo asociado a la app.

Se puede personalizar añadiendo la directiva

android:fullBackupContent="@xml/backup_rules"

Permite incluir o excluir elementos

<full-backup-content>
    <include domain=["file" | "database" | "sharedpref" | "external" | "root"]
    path="string"
    requireFlags=["clientSideEncryption" | "deviceToDeviceTransfer"] />
    <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"]
    path="string" />
</full-backup-content>

Ejemplo, si tenemos un archivo de preferencias llamado my_app

<full-backup-content>
    <include domain="sharedpref" path="my_app.xml" />
</full-backup-content>

Testeo

Para testear la funcionalidad de la copia de seguridad, mediante comandos Shell ADB podemos forzar la creación de la copia de seguridad y la restauración.

Backup – Copia de seguridad

Habilitar el administrador de copias de seguridad

adb shell bmgr enabled

Inicializar y ejecutar el administrador de copias de seguridad

adb shell bmgr backup @pm@
adb shell bmgr run

Realizar una copia de seguridad completa

adb shell bmgr fullbackup <nombre_del_paquete>

Cuando el sistema android realiza una copia de seguridad completa, se cerrará la aplicación de forma predeterminada, para evitar cambios en los datos locales mientras se ejecuta el proceso. Si queremos ofrecer una copia de seguridad en primer plano, podemos habilitar una bandera en el manifiesto. (funciona para la versión> = 24)

android:backupInForeground="true"

Restore – Restaurar la copia de seguridad

La restauración de datos se realiza automáticamente cuando la aplicación se reinstala desde la tienda Google Play o usando los comandos ADB (instalación usando Android Studio)

Demostración

Video demostrativo para ver la implementación de la funcionalidad copia de seguridad automática para Android

Autor:

Desarrollador freelance programador apasionado por el arte de programar, amante del auto aprendizaje y interesado por la tecnología en general.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .