Home | History | Annotate | Download | only in backup
      1 page.title=Backup automtico para aplicativos
      2 page.tags=backup, previewresources, androidm
      3 page.keywords=backup, autobackup, preview
      4 page.image=images/cards/card-auto-backup_2x.png
      5 @jd:body
      6 
      7 <div id="qv-wrapper">
      8   <div id="qv">
      9     <h2>Neste documento</h2>
     10       <ol>
     11         <li><a href="#overview">Viso geral</a></li>
     12         <li><a href="#configuring">Configurar backup de dados</a></li>
     13         <li><a href="#testing">Testar configurao de backup</a></li>
     14         <li><a href="#issues">Problemas conhecidos</a></li>
     15       </ol>
     16   </div>
     17 </div>
     18 
     19 <p>
     20   Frenquentemente, os usurios investem muito tempo e esforo para criar dados e configurar preferncias
     21  nos aplicativos. Preservar esses dados para os usurios caso substituam um dispositivo quebrado ou atualizem-se para um novo
     22   importante para garantir uma tima experincia de usurio. Dispositivos que executam o sistema Android M Preview
     23  ajudam a garantir uma boa experincia para os usurios nessas circunstncias realizando o backup dos dados do aplicativo
     24  automaticamente no Google Drive. Os dados do aplicativo so restaurados automaticamente se um usurio alterar ou atualizar um
     25  dispositivo.
     26 </p>
     27 
     28 <p>
     29   Os backups automticos esto ativos para todos os aplicativos instalados nos dispositivos que executam o Android M Preview. Nenhum
     30  cdigo adicional de aplicativo  necessrio. O sistema fornece aos usurios a habilidade de deciso
     31  sobre os backups automticos de dados. Tambm  possvel limitar quais dados do aplicativo devem ter o backup.
     32 </p>
     33 
     34 <p>
     35   Este documento descreve o novo comportamento do sistema e como especificar quais dados tero backup
     36  para o aplicativo.
     37 </p>
     38 
     39 <h2 id="overview">Viso geral</h2>
     40 
     41 <p>
     42   O recurso de backup automtico preserva os dados que o aplicativo cria em um dispositivo de usurio enviando-os
     43   conta do Google Drive do usurio e criptografando-os. No h cobranas para voc ou para o usurio
     44  em relao ao armazenamento de dados e os dados salvos no contam para a cota do Drive pessoal do usurio. Durante
     45  o perodo do M Preview, os usurios podem armazenar at 25 MB por aplicativo do Android.
     46 </p>
     47 
     48 <p>
     49   Os backups automticos ocorrem a cada 24 horas, quando o dispositivo est ocioso, carregando e conectado
     50  a uma rede Wi-Fi. Quando esses requisitos so atendidos, o servio Backup Manager envia todos os dados de backup
     51  disponveis  nuvem. Quando um usurio transita para um novo dispositivo, ou desinstala e reinstala
     52  o aplicativo com backup realizado, uma operao de restaurao copia os dados de backup para o diretrio de dados
     53  do aplicativo recm-instalado.
     54 </p>
     55 
     56 <p class="note">
     57   <strong>Observao:</strong> se o usurio usar o
     58  <a href="{@docRoot}google/backup/index.html">servio de Backup do Android</a> de legado, este novo comportamento
     59  no se aplicar aos trabalhos de comportamento de backup existentes com o normal.
     60 </p>
     61 
     62 
     63 <h3 id="auto-exclude">Arquivos de dados excludos automaticamente</h3>
     64 
     65 <p>
     66   Nem todos os dados do aplicativo devem ter backup, como arquivos temporrios e de armazenamento em cach. Portanto, o servio de backup automtico
     67  exclui determinados arquivos de dados por padro:
     68 </p>
     69 
     70 <ul>
     71   <li>Arquivos em diretrios identificados pelos mtodos {@link android.content.Context#getCacheDir
     72  getCacheDir()} e {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
     73 .
     74   </li>
     75 
     76   <li>Arquivos localizados no armazenamento externo, a no ser que estejam no diretrio identificado pelo mtodo
     77  {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
     78 .
     79   </li>
     80 
     81   <li>Arquivos localizados no diretrio identificado pelo mtodo
     82  {@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()}.
     83   </li>
     84 </ul>
     85 
     86 <h2 id="configuring">Configurar backup de dados</h2>
     87 
     88 <p>
     89   Os dados criados por qualquer aplicativo instalado em um dispositivo M Preview tm backup, exceto
     90  os arquivos excludos automaticamente listados na seo anterior.  possvel limitar e configurar
     91  quais dados tero backup no seu aplicativo usando as configuraes no manifesto do aplicativo.
     92 </p>
     93 
     94 <h3 id="include-exclude">Incluir ou excluir dados</h3>
     95 
     96 <p>
     97   Dependendo de quais dados o aplicativo precisar e do modo que forem salvos, voc precisar definir
     98  regras especficas para incluir ou excluir determinados arquivos ou diretrios. O servio de backup automtico suporta
     99  a configurao dessas regras de backup por meio do uso de um arquivo de configurao XML e do
    100  manifesto do aplicativo. No manifesto do aplicativo,  possvel especificar o arquivo de configurao de esquema de backup como exibido
    101  no seguinte exemplo:
    102 </p>
    103 
    104 <pre>
    105 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    106 &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
    107         xmlns:tools="http://schemas.android.com/tools"
    108         package="com.my.appexample"&gt;
    109     &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
    110     &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
    111     &lt;app ...
    112 <strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
    113     &lt;/app&gt;
    114     ...
    115 &lt;/manifest&gt;
    116 </pre>
    117 
    118 <p>
    119   Neste cdigo de exemplo, o atributo <code>android:fullBackupContent</code> especifica um arquivo XML,
    120  localizado no diretrio <code>res/xml/</code> do projeto de desenvolvimento do aplicativo, chamado
    121  <code>mybackupscheme.xml</code>. Este arquivo de configurao inclui as regras de quais arquivos tero
    122  backup. O seguinte cdigo de exemplo mostra um arquivo de configurao que exclui um arquivo especfico
    123  dos backups:
    124 </p>
    125 
    126 <pre>
    127 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    128 &lt;full-backup-content&gt;
    129     &lt;exclude domain="database" path="device_info.db"/&gt;
    130 &lt;/full-backup-content&gt;
    131 </pre>
    132 
    133 <p>
    134   Esta configurao de backup de exemplo exclui do backup somente um arquivo especfico do banco de dados.
    135   Todos os outros arquivos tero backup.
    136 </p>
    137 
    138 <h4>Sintaxe da configurao de backup</h4>
    139 
    140 <p>
    141   A configurao do servio de backup permite que voc especifique quais arquivos incluir ou excluir do
    142 backup. A sintaxe para o arquivo XML de configurao de backup de dados  a seguinte:
    143 </p>
    144 
    145 <pre>
    146 &lt;full-backup-content&gt;
    147     &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
    148     &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
    149 &lt;/full-backup-content&gt;
    150 </pre>
    151 
    152 <p>
    153   Os seguintes elementos e atributos permitem que voc especifique os arquivos que sero includos ou excludos
    154  do backup:
    155 </p>
    156 
    157 <ul>
    158   <li>
    159   <code>&lt;include&gt;</code>. Use este elemento se quiser especificar um conjunto de recursos
    160 para o backup, em vez de fazer o sistema realizar o backup de todos os dados no aplicativo por padro. Ao especificar
    161  uma tag <code>&lt;include&gt;</code>, o sistema realiza apenas o backup <em>dos recursos especificados</em>
    162  com este elemento.
    163   </li>
    164 
    165   <li>
    166   <code>&lt;exclude&gt;</code>. Use este elemento para especificar um conjunto de recursos que ser excludo
    167  do backup. O sistema realiza o backup de todos os dados no aplicativo, exceto os recursos especificados
    168  com este elemento.
    169   </li>
    170 
    171   <li>
    172   <code>domain.</code> O tipo de recurso que deseja excluir ou incluir no backup. Os valores vlidos
    173  que podem ser especificados para este atributo incluem:
    174   </li>
    175 
    176   <li style="list-style: none">
    177   <ul>
    178     <li>
    179     <code>root</code>. Especifica que o recurso est no diretrio raiz do aplicativo.
    180     </li>
    181 
    182     <li>
    183     <code>file</code>. Corresponde ao recurso no diretrio retornado
    184  pelo mtodo {@link android.content.Context#getFilesDir getFilesDir()}.
    185     </li>
    186 
    187     <li>
    188     <code>database</code>. Corresponde ao banco de dados retornado
    189  pelo mtodo {@link android.content.Context#getDatabasePath getDatabasePath()} ou usando
    190  a classe {@link android.database.sqlite.SQLiteOpenHelper}.
    191     </li>
    192 
    193     <li>
    194     <code>sharedpref</code>. Corresponde a um objeto {@link android.content.SharedPreferences}
    195  retornado pelo mtodo {@link android.content.Context#getSharedPreferences getSharedPreferences()}
    196 .
    197     </li>
    198 
    199     <li>
    200     <code>external</code>. Especifica que o recurso est no armazenamento externo e corresponde
    201  a um arquivo no diretrio retornado pelo mtodo
    202  {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}.
    203     </li>
    204 
    205     <li>
    206     <code>path</code>. O caminho de arquivo para um recurso que deseja excluir ou incluir
    207  no backup.
    208     </li>
    209   </ul>
    210   </li>
    211 </ul>
    212 
    213 
    214 <h3 id="prohibit">Proibir backup de dados</h3>
    215 
    216 <p>
    217    possvel optar por evitar backups automticos de quaisquer dados do aplicativo configurando
    218  o atributo <code>android:allowBackup</code> para <code>false</code> no elemento do aplicativo
    219  do manifesto. Esta configurao  ilustrada no seguinte cdigo de exemplo:
    220 </p>
    221 
    222 <pre>
    223 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    224 &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
    225         xmlns:tools="http://schemas.android.com/tools"
    226         package="com.my.appexample"&gt;
    227     &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
    228     &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
    229     &lt;app ...
    230 <strong>        android:allowBackup="false"&gt;</strong>
    231     &lt;/app&gt;
    232     ...
    233 &lt;/manifest&gt;
    234 </pre>
    235 
    236 
    237 <h2 id="testing">Testar configurao de backup</h2>
    238 
    239 <p>
    240   Ao criar uma configurao de backup, deve-se test-la para garantir que o aplicativo
    241  salva os dados e que eles podem ser restaurados corretamente.
    242 </p>
    243 
    244 
    245 <h4>Ativar registro de backup</h4>
    246 
    247 <p>
    248   Para ajudar a determinar como o recurso de backup analisa o arquivo XML, ative o registro
    249  antes de realizar um backup de teste:
    250 </p>
    251 
    252 <pre class="noprettyprint">
    253 $ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
    254 </pre>
    255 
    256 <h4>Teste de backup</h4>
    257 
    258 <p>Para executar um backup manualmente, primeiro deve-se inicializar o Backup Manager chamando o seguinte
    259  comando:
    260 </p>
    261 
    262 <pre class="noprettyprint">
    263 $ adb shell bmgr run
    264 </pre>
    265 
    266 <p>
    267   Em seguida, realiza-se o backup manualmente do aplicativo usando o seguinte comando, especificando o nome
    268  do pacote para o aplicativo como o parmetro <code>&lt;PACKAGE&gt;</code>:
    269 </p>
    270 
    271 <pre class="noprettyprint">
    272 $ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
    273 
    274 
    275 <h4>Teste de restaurao</h4>
    276 
    277 <p>
    278   Para iniciar manualmente uma restaurao aps o backup dos dados do aplicativo, chame o seguinte comando,
    279  especificando o nome do pacote para o aplicativo como o parmetro <code>&lt;PACKAGE&gt;</code>:
    280 </p>
    281 
    282 <pre class="noprettyprint">
    283 $ adb shell bmgr restore &lt;PACKAGE&gt;
    284 </pre>
    285 
    286 <p class="warning">
    287   <b>Aviso:</b> esta ao impede o aplicativo de apagar os dados antes de realizar
    288  a operao de restaurao.
    289 </p>
    290 
    291 <p>
    292   Para iniciar o processo de restaurao do aplicativo, deve-se desinstalar e reinstal-lo. Os dados
    293  do aplicativo so restaurados automaticamente a partir da nuvem quando a instalao do aplicativo for concluda.
    294 </p>
    295 
    296 
    297 <h4>Resoluo de problemas de backups</h4>
    298 
    299 <p>
    300   Caso ocorra problemas,  possvel apagar os dados de backup e os metadados associados desativando o backup
    301  e reativando-o em <strong>Settings (Configuraes) &gt; Backup</strong>, redefinindo o dispositivo para as especificaes de fbrica, ou
    302  chamando este comando:
    303 </p>
    304 
    305 <pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
    306 
    307 <p>
    308   O valor <code>&lt;TRANSPORT&gt;</code> deve ser prefixado por <code>com.google.android.gms</code>.
    309   Para obter uma lista de transportes, chame o seguinte comando:
    310 </p>
    311 
    312 <pre>$ adb shell bmgr list transports</pre>
    313 
    314 <h2 id="issues">Problemas conhecidos</h2>
    315 
    316 <p>A seguir esto os problemas conhecidos com o servio de backup automtico:</p>
    317 
    318 <ul>
    319   <li><strong>Google Cloud Messaging</strong> -
    320  Para aplicativos que usam o Google Cloud Messaging para notificaes push, h um problema conhecido
    321  onde o backup do ID de registro retornado pelo registro do Google Cloud Messaging pode
    322  desencadear notificaes push para o aplicativo restaurado.  importante consultar a API para obter um novo ID de registro
    323  aps a instalao em um novo dispositivo, o que no deve ser o caso se o ID de registro antigo
    324  tiver backup. Para evitar isto, exclua o ID de registro do conjunto de arquivos
    325  de backup.
    326   </li>
    327 </ul>
    328