1page.title=Copia de seguridad automática para aplicaciones 2page.tags=copia de seguridad, recursos de la versión preliminar, androidm 3page.keywords=copia de seguridad, copia de seguridad automática, versión preliminar 4page.image=images/cards/card-auto-backup_2x.png 5@jd:body 6 7<div id="qv-wrapper"> 8 <div id="qv"> 9 <h2>Contenido del documento</h2> 10 <ol> 11 <li><a href="#overview">Información general</a></li> 12 <li><a href="#configuring">Configuración de la copia de seguridad de datos</a></li> 13 <li><a href="#testing">Pruebas de la configuración de copia de seguridad</a></li> 14 <li><a href="#issues">Problemas conocidos</a></li> 15 </ol> 16 </div> 17</div> 18 19<p> 20 A menudo, los usuarios invierten tiempo y esfuerzo significativos para crear datos y configurar preferencias dentro de las aplicaciones. 21 Preservar los datos de los usuarios en caso de que reemplacen un dispositivo averiado o se actualicen a uno nuevo es una parte importante para garantizar una excelente experiencia del usuario. 22 Los dispositivos que ejecutan el sistema de la versión preliminar de Android M ayudan a garantizar una buena experiencia para los usuarios en estas circunstancias al realizar automáticamente copias de seguridad de los datos de la aplicación en Google Drive. 23 24 Los datos de la aplicación se restauran automáticamente si un usuario cambia o actualiza un dispositivo. 25 26</p> 27 28<p> 29 Las copias de seguridad automáticas se habilitan para todas las aplicaciones instaladas en dispositivos que ejecuten la versión preliminar de Android M. No se requiere ningún código de aplicación adicional. 30 El sistema les proporciona a los usuarios la capacidad de desactivar las copias de seguridad de datos automáticas. 31 También puede optar por limitar qué datos de su aplicación se incluyen en la copia de seguridad. 32</p> 33 34<p> 35 En este documento, se describe el nuevo comportamiento del sistema y el modo de especificar qué datos incluir en la copia de seguridad de la aplicación. 36 37</p> 38 39<h2 id="overview">Información general</h2> 40 41<p> 42 Para preservar los datos que su aplicación crea en un dispositivo de usuario, la característica de copia de seguridad automática los carga a la cuenta de Google Drive del usuario y los cifra. 43 No se aplican cargos para usted ni para el usuario por el almacenamiento de datos y los datos guardados no se consideran al calcular la capacidad máxima de la cuenta personal de Google Drive del usuario. 44 Durante el período de la versión preliminar de Android M, los usuarios pueden almacenar hasta 25 MB por aplicación de Android. 45 46</p> 47 48<p> 49 Las copias de seguridad automáticas se realizan cada 24 horas, cuando el dispositivo está inactivo, se está cargando y está conectado a una red Wi-Fi. 50 Cuando se cumplen estas condiciones, el servicio Backup Manager carga todos los datos de copia de seguridad disponibles a la nube. 51 Cuando el usuario pasa a un dispositivo nuevo, o desinstala y vuelve a instalar la aplicación de la copia de seguridad, una operación de restauración copia los datos incluidos en la copia de seguridad en el directorio de datos de la aplicación recientemente instalada. 52 53 54</p> 55 56<p class="note"> 57 <strong>Nota:</strong> Si su aplicación utiliza el <a href="{@docRoot}google/backup/index.html">servicio Android Backup</a> heredado, este nuevo comportamiento no se aplica y el comportamiento de copia de seguridad existente funciona de manera habitual. 58 59 60</p> 61 62 63<h3 id="auto-exclude">Archivos de datos automáticamente excluidos</h3> 64 65<p> 66 No todos los datos de la aplicación se deben incluir en la copia de seguridad, como los archivos temporales y los cachés, por lo que el servicio de copias de seguridad automáticas excluye ciertos archivos de datos de manera predeterminada: 67 68</p> 69 70<ul> 71 <li>Archivos de los directorios a los que hacen referencia los métodos {@link android.content.Context#getCacheDir 72 getCacheDir()} y {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()} 73. 74 </li> 75 76 <li>Archivos ubicados en almacenamiento externo, salvo que residan en el directorio al que hace referencia el método 77 {@link android.content.Context#getExternalFilesDir getExternalFilesDir()} 78. 79 </li> 80 81 <li>Archivos ubicados en el directorio a los que hace referencia el método 82 {@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()}. 83 </li> 84</ul> 85 86<h2 id="configuring">Configuración de la copia de seguridad de datos</h2> 87 88<p> 89 Las copias de seguridad se realizan para los datos creados por cualquier aplicación instalada en un dispositivo con la versión preliminar de Android M, excepto en el caso de los archivos excluidos automáticamente que se mencionaron en la sección anterior. 90 Usted puede limitar y configurar aún más los datos que se incluyen en la copia de seguridad de su aplicación y, para ello, debe utilizar configuraciones en el manifiesto de su aplicación. 91 92</p> 93 94<h3 id="include-exclude">Cómo incluir o excluir datos</h3> 95 96<p> 97 De acuerdo con los datos que su aplicación necesita y el modo en que usted guarda estos datos, es posible que tenga que definir reglas específicas para incluir o excluir ciertos archivos o directorios. 98 El servicio de copias de seguridad automáticas admite la configuración de estas reglas de copias de seguridad a través del uso de un archivo de configuración XML y el manifiesto de la aplicación. 99 100 En el manifiesto de la aplicación, puede especificar un archivo de configuración de esquema de la copia de seguridad, como se muestra en el siguiente ejemplo: 101 102</p> 103 104<pre> 105<?xml version="1.0" encoding="utf-8"?> 106<manifest xmlns:android="http://schemas.android.com/apk/res/android" 107 xmlns:tools="http://schemas.android.com/tools" 108 package="com.my.appexample"> 109 <uses-sdk android:minSdkVersion="MNC"/> 110 <uses-sdk android:targetSdkVersion="MNC"/> 111 <app ... 112<strong> android:fullBackupContent="@xml/mybackupscheme"></strong> 113 </app> 114 ... 115</manifest> 116</pre> 117 118<p> 119 En este código de ejemplo, el atributo <code>android:fullBackupContent</code> especifica un archivo XML, ubicado en el directorio <code>res/xml/</code> del proyecto de desarrollo de su aplicación, con el nombre <code>mybackupscheme.xml</code>. 120 121 Este archivo de configuración incluye reglas sobre los archivos para los que se realiza una copia de seguridad. 122 El siguiente código de ejemplo muestra un archivo de configuración que excluye un archivo específico de las copias de seguridad: 123 124</p> 125 126<pre> 127<?xml version="1.0" encoding="utf-8"?> 128<full-backup-content> 129 <exclude domain="database" path="device_info.db"/> 130</full-backup-content> 131</pre> 132 133<p> 134 Este ejemplo de configuración de copia de seguridad solo excluye un archivo específico de base de datos que no se incluirá en la copia de seguridad. 135 Todos los demás archivos se incluirán en la copia de seguridad. 136</p> 137 138<h4>Sintaxis de la configuración de copia de seguridad</h4> 139 140<p> 141 La configuración del servicio de copias de seguridad le permite especificar qué archivos incluir en la copia de seguridad o excluir de ella. 142 La sintaxis del archivo de configuración XML de copia de seguridad de datos es la siguiente: 143</p> 144 145<pre> 146<full-backup-content> 147 <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> 148 <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> 149</full-backup-content> 150</pre> 151 152<p> 153 Los siguientes elementos y atributos le permiten especificar qué archivos incluir de la copia de seguridad o excluir de ella: 154 155</p> 156 157<ul> 158 <li> 159 <code><include></code>. Use este elemento si desea especificar un conjunto de recursos para realizar una copia de seguridad, en lugar de hacer que el sistema realice una copia de seguridad de todos los datos de su aplicación de forma predeterminada. 160 Cuando especifica una etiqueta <code><include></code>, el sistema realiza una copia de seguridad <em>solo de los recursos que se especifican</em> 161 con este elemento. 162 163 </li> 164 165 <li> 166 <code><exclude></code>. Use este elemento para especificar un conjunto de recursos para excluir de la copia de seguridad. 167 El sistema realizará una copia de seguridad de todos los datos de su aplicación, excepto de los recursos que se especifican con este elemento. 168 169 </li> 170 171 <li> 172 <code>domain.</code> El tipo de recurso que desea incluir en la copia de seguridad o excluir de esta. Entre los valores válidos que usted puede especificar para este atributo se incluyen los siguientes: 173 174 </li> 175 176 <li style="list-style: none"> 177 <ul> 178 <li> 179 <code>root</code>. Especifica que el recurso se encuentra en el directorio raíz de la aplicación. 180 </li> 181 182 <li> 183 <code>file</code>. Corresponde a un recurso del directorio devuelto por el método 184{@link android.content.Context#getFilesDir getFilesDir()}. 185 </li> 186 187 <li> 188 <code>database</code>. Corresponde a una base de datos devuelta por el método 189{@link android.content.Context#getDatabasePath getDatabasePath()} o mediante el uso de la clase 190{@link android.database.sqlite.SQLiteOpenHelper}. 191 </li> 192 193 <li> 194 <code>sharedpref</code>. Corresponde a un objeto {@link android.content.SharedPreferences} devuelto por el método {@link android.content.Context#getSharedPreferences getSharedPreferences()} 195. 196 197 </li> 198 199 <li> 200 <code>external</code>. Especifica que el recurso se encuentra en almacenamiento externo y corresponde a un archivo del directorio devuelto por el método 201{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}. 202 203 </li> 204 205 <li> 206 <code>path</code>. La ruta de archivo para un recurso que desea incluir en la copia de seguridad o excluir de esta. 207 208 </li> 209 </ul> 210 </li> 211</ul> 212 213 214<h3 id="prohibit">Cómo prohibir las copias de seguridad de datos</h3> 215 216<p> 217 Puede optar por impedir que se realicen copias de seguridad automáticas de los datos de su aplicación y, para ello, debe configurar el atributo 218<code>android:allowBackup</code> en <code>false</code> en el elemento de la aplicación de su manifiesto. 219 Esta configuración se ilustra en el siguiente código de ejemplo: 220</p> 221 222<pre> 223<?xml version="1.0" encoding="utf-8"?> 224<manifest xmlns:android="http://schemas.android.com/apk/res/android" 225 xmlns:tools="http://schemas.android.com/tools" 226 package="com.my.appexample"> 227 <uses-sdk android:minSdkVersion="MNC"/> 228 <uses-sdk android:targetSdkVersion="MNC"/> 229 <app ... 230<strong> android:allowBackup="false"></strong> 231 </app> 232 ... 233</manifest> 234</pre> 235 236 237<h2 id="testing">Pruebas de la configuración de copia de seguridad</h2> 238 239<p> 240 Cuando haya creado una configuración de copia de seguridad, debe probarla para garantizar que su aplicación guarde los datos y se pueda restaurar correctamente. 241 242</p> 243 244 245<h4>Cómo habilitar un registro de copias de seguridad</h4> 246 247<p> 248 Para ayudar a determinar la manera en que la característica de copia de seguridad está analizando su archivo XML, habilite el registro antes de realizar una copia de seguridad de prueba: 249 250</p> 251 252<pre class="noprettyprint"> 253$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE 254</pre> 255 256<h4>Cómo probar la copia de seguridad</h4> 257 258<p>Para ejecutar manualmente una copia de seguridad, primero debe inicializar Backup Manager llamando al siguiente comando: 259 260</p> 261 262<pre class="noprettyprint"> 263$ adb shell bmgr run 264</pre> 265 266<p> 267 Luego, realice una copia de seguridad de su aplicación manualmente utilizando el comando que se indica a continuación y especificando el nombre de paquete para su aplicación como el parámetro <code><PACKAGE></code>: 268 269</p> 270 271<pre class="noprettyprint"> 272$ adb shell bmgr fullbackup <PACKAGE></pre> 273 274 275<h4>Cómo probar la restauración</h4> 276 277<p> 278 Para iniciar una restauración manualmente después de realizar una copia de seguridad de los datos, llame al comando que se indica a continuación y especifique el nombre de paquete para su aplicación como el parámetro <code><PACKAGE></code>: 279 280</p> 281 282<pre class="noprettyprint"> 283$ adb shell bmgr restore <PACKAGE> 284</pre> 285 286<p class="warning"> 287 <b>Advertencia:</b> Esta acción detiene la aplicación y borra sus datos antes de realizar la operación de restauración. 288 289</p> 290 291<p> 292 Para iniciar el proceso de restauración de su aplicación, desinstale su aplicación y vuelva a instalarla. Los datos de la aplicación se restaurarán automáticamente desde la nube una vez que se complete la instalación. 293 294</p> 295 296 297<h4>Solución de problemas de las copias de seguridad</h4> 298 299<p> 300 Si tiene algún problema, borre los datos de la copia de seguridad y los metadatos asociados; para hacerlo, desactive y vuelva a activar la copia de seguridad en <strong>Settings > Backup</strong>, restablezca el dispositivo a la configuración predeterminada de fábrica o llame al siguiente comando: 301 302 303</p> 304 305<pre>$ adb shell bmgr wipe <TRANSPORT> <PACKAGE></pre> 306 307<p> 308 El valor <code><TRANSPORT></code> debe estar precedido por <code>com.google.android.gms</code>. 309 Para obtener una lista de transportes, llame al siguiente comando: 310</p> 311 312<pre>$ adb shell bmgr list transports</pre> 313 314<h2 id="issues">Problemas conocidos</h2> 315 316<p>Los siguientes son problemas conocidos del servicio de copias de seguridad automáticas:</p> 317 318<ul> 319 <li><strong>Google Cloud Messaging</strong>: En las aplicaciones que utilizan Google Cloud Messaging para notificaciones push, existe un problema conocido en el que al realizar una copia de seguridad de la Id. de registro devuelta por el registro de Google Cloud Messaging, se pueden romper las notificaciones push de la aplicación restaurada. Es importante realizar una consulta a la API para obtener una nueva Id. de registro después de realizar la instalación en un dispositivo nuevo, lo que no sucede si se realizó una copia de seguridad de la Id. de registro anterior. 320 321 322 323 324 Para evitar esta situación, excluya la Id. de registro del conjunto de archivos para incluir en la copia de seguridad. 325 326 </li> 327</ul> 328