Desde a nova versão de visualização do ADT (versão 21) , eles têm um novo aviso de fiapo que informa a próxima coisa no arquivo de manifesto (na tag do aplicativo):
Deve definir explicitamente android: allowBackup como true ou false (é verdade por padrão e pode ter algumas implicações de segurança nos dados do aplicativo)
No site oficial , eles escreveram:
Algumas novas verificações: você deve decidir explicitamente se o aplicativo permite backups e uma verificação de etiqueta. Há um novo sinalizador de linha de comando para definir o caminho da biblioteca. Muitas melhorias na análise incremental do cotão durante a edição.
O que é esse aviso? Qual é o recurso de backup e como eu o uso?
Além disso, por que o aviso me diz que tem implicações de segurança? Quais são as desvantagens e vantagens de desativar esse recurso?
Existem dois conceitos de backup para o manifesto:
- "android: allowBackup " permite fazer backup e restaurar via adb, como mostrado aqui :
Se o aplicativo deve participar da infraestrutura de backup e restauração. Se esse atributo estiver definido como falso, nenhum backup ou restauração do aplicativo será executado, mesmo por um backup de sistema completo que, de outra forma, faria com que todos os dados do aplicativo fossem salvos via adb. O valor padrão deste atributo é verdadeiro.
Isso é considerado um problema de segurança porque as pessoas podem fazer backup do seu aplicativo via ADB e, em seguida, obter dados privados do seu aplicativo no PC.
No entanto, acho que não é um problema, já que a maioria dos usuários não sabe o que é adb e, se o fizerem, também saberão como fazer root no dispositivo. As funções do ADB funcionariam apenas se o dispositivo tiver o recurso de depuração ativado, e isso precisa que o usuário o habilite.
Portanto, apenas os usuários que conectam seus dispositivos ao PC e ativam o recurso de depuração serão afetados. Se eles tiverem um aplicativo mal-intencionado no PC que usa as ferramentas do ADB, isso pode ser problemático, pois o aplicativo pode ler os dados de armazenamento privado.
Eu acho que o Google deve apenas adicionar um recurso que está desativado por padrão, na categoria desenvolvedor, para permitir o backup e a restauração de aplicativos via ADB.
- "android: backupAgent " permite usar o recurso de backup e restauração da nuvem, como mostrado aqui e aqui :
O nome da classe que implementa é o agente de backup do aplicativo, uma subclasse de BackupAgent. O valor do atributo deve ser um nome de classe totalmente qualificado (como "com.example.project.MyBackupAgent"). No entanto, como atalho, se o primeiro caractere do nome for um ponto (por exemplo, ".MyBackupAgent"), ele será anexado ao nome do pacote especificado no elemento. Não há padrão. O nome deve ser especificado.
Este não é um problema de segurança.
fonte
Respostas:
Para este aviso de fiapos, como para todos os outros avisos de fiapos, observe que você pode obter uma explicação mais completa do que apenas o que está na mensagem de erro de uma linha; você não precisa pesquisar na web para obter mais informações.
Se você estiver usando o lint através do Eclipse, abra a visualização de avisos do lint, onde é possível selecionar o erro do lint e ver uma explicação mais longa, ou invocar a correção rápida (Ctrl-1) na linha de erro, e uma das sugestões é " Explique este problema ", que também apresentará uma explicação mais completa. Se você não estiver usando o Eclipse, poderá gerar um relatório HTML a partir de lint (
lint --html <filename>
), que inclui explicações completas ao lado dos avisos, ou pode pedir ao lint para explicar um problema específico. Por exemplo, o problema relacionado aallowBackup
tem o IDAllowBackup
(mostrado no final da mensagem de erro), portanto, a explicação mais completa é:O
allowBackup
atributo determina se os dados de um aplicativo podem ser copiados e restaurados, conforme documentado aqui .Clique aqui para obter mais informações
fonte
Aqui está o que o backup nesse sentido realmente significa:
~ Extraído de http://developer.android.com/guide/topics/data/backup.html
Você pode se registrar neste serviço de backup como desenvolvedor aqui: https://developer.android.com/google/backup/signup.html
Os tipos de dados que podem ser armazenados em backup são arquivos, bancos de dados, preferências compartilhadas, cache e lib. Geralmente, eles são armazenados no diretório /data/data/[com.myapp] do seu dispositivo, que é protegido contra leitura e não pode ser acessado, a menos que você tenha privilégios de root.
UPDATE : Você pode ver este sinalizador listado na API do BackupManager : BackupManager
fonte
Isso não é mencionado explicitamente, mas com base nos seguintes documentos, acho que está implícito que um aplicativo precisa declarar e implementar um BackupAgent para que o backup de dados funcione, mesmo no caso em que allowBackup esteja definido como true (que é o valor padrão).
http://developer.android.com/reference/android/R.attr.html#allowBackup http://developer.android.com/reference/android/app/backup/BackupManager.html http://developer.android. com / guide / topics / data / backup.html
fonte
É uma preocupação de privacidade . É recomendável não permitir que os usuários façam backup de um aplicativo se ele contiver dados confidenciais. Tendo acesso aos arquivos de backup (ou seja, quando
android:allowBackup="true"
), é possível modificar / ler o conteúdo de um aplicativo, mesmo em um dispositivo não-rooteado.Solução - use
android:allowBackup="false"
no arquivo de manifesto.Você pode ler esta postagem para obter mais informações: Hackeando aplicativos Android usando técnicas de backup
fonte