Pressione enter para ver os resultados ou esc para cancelar.

Como extrair o banco de dados do seu aplicativo Android sem root

Você está desenvolvendo um aplicativo para Android, ele já está em produção e tudo está funcionando bem. Até que não está mais. O usuário reporta um bug e você não consegue reproduzi-lo em seu ambiente de testes, você está diante de algo que tira o sono de desenvolvedores do mundo inteiro: um bug que só acontece em produção.

Após investigar bastante o problema você consegue reproduzir o bug, o problema é que isso só acontece depois de diversas operações no banco de dados. Você suspeita que o problema pode estar no seu banco, em algum momento seus dados estão causando problemas na aplicação: um insert que deu errado, dados fora do padrão esperado, choque de chaves… você tem vários palpites, mas testá-los não é fácil, já que você não tem acesso ao arquivo do banco de dados para investigar melhor o que está acontecendo.

Nós já passamos por isso algumas vezes, e na computação alguém passa por isso para que o próximo não tenha que passar. Nós achamos uma solução para extrair o banco de dados sem root, para que você possa solucionar o problema mais rápido. Meu colega de trabalho Pedro Costa criou um arquivo .bat e preparou um pacote que automatiza todo o processo, você pode baixá-lo aqui: AppExtractor

Usando o script

Para usá-lo basta executar o arquivo Extractor.bat passando como parâmetro o nome do seu aplicativo:

Extractor.bat br.com.seuaplicativo.nome

Será exibida uma tela no seu dispositivo pedindo autorização, basta clicar em “Backup my data” e esperar o processo terminar:

Extração

Uma pasta “tmp” será criada no mesmo local do Extractor.bat.

Caso a pasta esteja vazia, certifique-se que o nome da sua aplicação está correto. Ele deve ser exatamente o mesmo nome do seu aplicativo, definido no AndroidManifest.xml.

Você pode definir esse nome nas propriedades do projeto.

No Eclipse:
Eclipse Properties

No Xamarin Studio:
Xamarin Studio properties

Feito isso você terá seu banco de dados inteiro extraído. Agora basta pegar sua ferramenta favorita de SQLite e ir atrás do bug.

O script funciona com dispositivos e emuladores (inclusive com o Genymotion), basta que eles estejam conectados pelo ADB.

Este é o código que faz toda a mágica (não tente executar apenas o script abaixo, ele precisa de várias ferramentas do Android para funcionar, utilize o link acima para baixar uma versão pronta para executar):

Imagem que ilustra o post por: EricaJoy/Flickr

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone
Comentários

31 Comentários

Edy

Bom dia obrigado por compartilhar, baixei os arquivos mas não consegui sucesso ao utilizar em um aparelho com o Android 6.0, poderia ser por esta versão ter formas de permissão diferente ?

Henrique

Tem como enviar os arquivos para hbarcelloscarvalho@gmail.com ?
O link do AppExtractor não está mais disponível.

Obrigado!

Mauro

Uso um aplicativo no celular que não encontro o arquivo de dados com as configurações que escolhi. Pesquisei no android\nome_do_aplicativo\ e existe a pasta cache, mas não tem a pasta data.
Gostaria de saber se esse arquivo de configuração pode estar no próprio aplicativo e se esse script vai extraí-lo.

Marcelo da Silva

Desculpe minha ignorância, sou novato no Android.
Com esse método eu consigo extrair o banco de dados do app descomplica e salvar os vídeos baixado nele em um pc?

Ricardo Fernandes

Olá. O problema está na versão do arquivo “abe.jar”. Fiz um novo pacote com o jar atualizado. Está disponível em: https://mega.nz/#F!QIomHKyR!SJM4RBsJ_EIngFgAQp4NEg

Gabriel

Não aparece nada na pasta.

Edy

No Android 6.0 não funciona, será por causa das permissões que é exigida pelo usuário a partir do Android 6.0 ?

Guilherme Bento

Bom dia.

Como executo esse BAT ? Estou com essa dúvida básica. Dentro do PC , eu acesso via CMD esse arquivo e executo ?

Mahmoud Ali

Acesse pelo CMD e execute

Guilherme Bento

Ok, consegui abri ro CMD e executar, mas deu o mesmo erro do gabriel. Alguma sugestão além de reiniciar o dispositivo ?

ilair

Olá! eu estou começando a programar mobile e estou usando o code + ionic para desenvolver, como faço para rodar isso nele e pegar o banco?
Grato pela Ajuda!

Mahmoud Ali

A única etapa que mudaria é como você ia pegar o nome do aplicativo, isso pode ser feito pelo próprio Android, indo na seção de “Aplicativos” lá das configurações dele.

ilair

Desculpe a minha ignorância, mas eu faço isso pelo prompt?

José Domingos Da Silva Oliveira

Ola, alguem resolveu o erro que da tando?
Caused by: java.lang.IllegalArgumentException: Don’t know how to process version 3

por favor, alguem pode me ajudar???

Gabriel

estou com o mesmo problema, só que com a versão 2. Alguem conseguiu resolver?

Marcos Angelo

Bom dia, o meu esta com o mesmo problema do Gabriel, so que eu reiniciei e nao funcionou!

C:\Users\MarcosAngelo\Desktop\AppExtractor>Extractor.bat br.parmamobileplus
Please connect your Android device with USB Debugging enabled:

Now unlock your device and confirm the backup operation.

Strong AES encryption disabled

Magic: ANDROID BACKUP
Version: 3
Exception in thread “main” java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Don’t
know how to process version 3
at org.nick.abe.AndroidBackup.extractAsTar(AndroidBackup.java:320)
at org.nick.abe.Main.main(Main.java:58)
… 5 more
Caused by: java.lang.IllegalArgumentException: Don’t know how to process version
3
at org.nick.abe.AndroidBackup.extractAsTar(AndroidBackup.java:202)
… 6 more
bin\tar: Cannot open tmp\backup.tar: No such file or directory
bin\tar: Error is not recoverable: exiting now
Cleaning up temporary files …

Arquivo excluído – C:\Users\MarcosAngelo\Desktop\AppExtractor\tmp\backup.ab
Não foi possível encontrar C:\Users\MarcosAngelo\Desktop\AppExtractor\tmp\backup
.tar
Done!

Aguardando 1498 segundos, pressione uma tecla para continuar …

Rafael

Ola, gostaria de saber o seguinte. Um soft de pc q continham o banco de dados foi perdido. Mas tem um aplicativo no smartphone q tem o banco de dados completo. Gostaria de saber se com esse metodo poderia me ajudar? Nao queria fazer root no aparelho para resgatar isso.

Mahmoud Ali

Olá Rafael, esse método vai te ajudar a extrair o banco de dados inteiro, aí você vai poder manipulá-lo como qualquer outro banco sqlite, então acredito que vai te ajudar sim.

Gabiel

Bom dia, gostaria de converter esse .bat em .sh, você saberia como me ajudar?

Mahmoud Ali

Olá Gabiel, infelizmente não tenho uma versão para Unix. Boa parte do script é apenas mensagens para o usuário, fora isso ele usa o ADB (que existe para o Unix) e o Java (que também existe para Unix), então deve ser bem fácil fazer a migração.
Sugiro retirar todos os echos e partir daí, vão ficar pouquíssimos comandos para tradução.

teixeira

Pesquisei muito e pelo odin3 consegui ressuscitar Samsung gt-s7500L, só que agora a atualização da Motorola para razr d3 não reconhecer o chip dois seria possível pergunto tirar a room de outro razr d3 e jogar no aparelho com problema embora voltei (https://www.youtube.com/watch?v=QaPTC68QGO0) para outra versão e não funcionar e como ser mesmo fazendo restauração pela recovery ainda fica alguma coisa teria como formatar o celular e resolver a questão tem algum vídeo no you tube explicando como extractor bat obrigado.

Gabriel

Funcionou! reiniciei o tablet e foi certinho, valeu, ajudou muito!

Mahmoud Ali

Desculpe a demora para responder, Gabriel. Pelo jeito já tá tudo ok 😀

visa kreditkartennummer fake

Se o Massa ganha em Spa e a Ferrari consegue um 1-2, a diferença cai pra 2 pontos. E aí tome-lhe déja-vu e pressão em cima do hamilton.GP2 eu tô meio por fora. São oq? 40 pontos em disputa? Só com muito azar o Pantano não leva.

guenstigsten kredit reise

“En minäkään. Mutta se ei tarkoita, etteikö luvaton kopiointi olisi silti epäkunnioittava teko toista yksilöä kohtaan.Mutta minä en tosiaan närkästynyt vaikka kopioitkin. Oli mukava vain huomata, että joku muukin seuraa Molyneuxin pölinöitä =)”–Aivan. Molyneux on sitä paitsi aivan mahtava yksilö. En olisi kummoinenkaan libertaari jos jättäisin toisen vapaamielisen ilman ansaitsemaansa “rispektii”.

loveadvert.ru

(Tényközlés ) Szerencsém, -vagy ellenkezÅ‘leg,- épp' a napokban kaptam egy MÃœPA magazint,- (?) – úgy látom, – ha nem is kényelmesebb itt olvasni,- de mintha itt több hír lenne…

Gabriel

No meu deu o seguinte erro:

Magic:
Version:
Exception in thread “main” java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.RuntimeException: java.lang.NumberFormatException: For inpu
t string: “”
at org.nick.abe.AndroidBackup.extractAsTar(AndroidBackup.java:320)
at org.nick.abe.Main.main(Main.java:58)
… 5 more
Caused by: java.lang.NumberFormatException: For input string: “”
at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)
at org.nick.abe.AndroidBackup.extractAsTar(AndroidBackup.java:201)
… 6 more
bin\tar: Cannot open tmp\backup.tar: No such file or directory
bin\tar: Error is not recoverable: exiting now
Cleaning up temporary files …

Arquivo excluído – C:\Users\Ranieri\Desktop\salvação\AppExtractor\tmp\backup.ab
Não foi possível encontrar C:\Users\Ranieri\Desktop\salvação\AppExtractor\tmp\ba
ckup.tar
Done!

coloquei o nome correto, e apareceu certinho a opção para eu fazer o backup, eu aceitei e deu isso. Alguma dica?

Gabriel

No meu deu o seguinte erro:

Magic:
Version:
Exception in thread “main” java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.RuntimeException: java.lang.NumberFormatException: For inpu
t string: “”
at org.nick.abe.AndroidBackup.extractAsTar(AndroidBackup.java:320)
at org.nick.abe.Main.main(Main.java:58)
… 5 more
Caused by: java.lang.NumberFormatException: For input string: “”
at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)
at org.nick.abe.AndroidBackup.extractAsTar(AndroidBackup.java:201)
… 6 more
bin\tar: Cannot open tmp\backup.tar: No such file or directory
bin\tar: Error is not recoverable: exiting now
Cleaning up temporary files …

Arquivo excluído – C:\Users\Ranieri\Desktop\salvação\AppExtractor\tmp\backup.ab
Não foi possível encontrar C:\Users\Ranieri\Desktop\salvação\AppExtractor\tmp\ba
ckup.tar
Done!

coloquei o nome correto, e apareceu certinho a opção para eu fazer o backup, eu aceitei e deu isso.

César Dias

Muito obrigado pela contribuição!!!

Mahmoud Ali

Que bom que foi útil! :)

Bruno Pacola

Excelente dica!!! Salvou minha segunda-feira!!! Obrigado!!!


Deixar um comentário