Atualmente estou trabalhando em um aplicativo WiFi para Android. Estou tendo problemas ao tentar acessar o banco de dados no dispositivo. Depurar no emulador não funciona para mim, porque não há suporte para WiFi no emulador. Tentei puxar o arquivo de banco de dados do dispositivo usando
adb pull data/data/package-name/databases/database-name
Mas recebo o erro "Permissão negada". Nesta resposta Android: onde os arquivos de banco de dados são armazenados? , Commonsware sugeriu puxar o arquivo de banco de dados executando no modo de depuração. Mas também não funciona. Qualquer ajuda sobre como depurar o banco de dados sem fazer o root do dispositivo seria muito apreciada.
SQLite format 3
string. Verifique também se você tem umasqlite
versão correta (ou seja, você não está tentando abrir o banco de dados sqlite3 com o executável sqlite2). E você também pode tentar outros clientes SQLite (por exemplo SQLiteStudio ). Espero que ajude.permission denied
Eu uso este script de shell no meu MAC, que copia o banco de dados diretamente para minha pasta de início. Solução fácil com um clique, basta alterar o nome do pacote (com.example.app) e o nome do banco de dados (database.sqlite)
Script Simples
Script que aceita argumentos [nome_do_pacote] [banco de dados]
fonte
A melhor maneira de visualizar e gerenciar o banco de dados do aplicativo Android é usar esta biblioteca https://github.com/sanathp/DatabaseManager_For_Android
Com esta biblioteca, você pode gerenciar o banco de dados SQLite do seu aplicativo a partir do próprio aplicativo. você pode ver as tabelas em seu banco de dados de aplicativo, atualizar, excluir, inserir linhas em suas tabelas. Tudo de seu aplicativo.
É um único arquivo de atividade java, basta adicionar o arquivo java à sua pasta de origem. Quando o desenvolvimento estiver concluído, remova o arquivo java da sua pasta src é isso.
Me ajudou muito. Espero que ajude você também.
Você pode ver a demonstração de 1 minuto aqui: http://youtu.be/P5vpaGoBlBY
fonte
Embora seja uma questão antiga, acho que ainda é relevante e merece uma resposta do estado atual. Existem ferramentas disponíveis que permitem inspecionar bancos de dados diretamente (sem a necessidade de extraí-los do dispositivo ou emulador).
A ferramenta que descobri mais recentemente (e prefiro a maioria) é o Android Debug Database .
Você só precisa adicionar esta dependência:
Nenhum código adicional é necessário. Depois de iniciar seu aplicativo, abra o logcat e filtre por "DebugDB" e você encontrará uma mensagem dizendo
Funciona com todos os navegadores e você pode inspecionar as tabelas do banco de dados e preferências compartilhadas.
Também funciona com o padrão e os emuladores Genymotion.
A ferramenta que usei antes é stetho .
Desvantagem: você precisa adicionar um pouco de código e está vinculado ao navegador Chrome.
Vantagem: você também tem a opção de inspecionar o tráfego de rede.
fonte
No meu aplicativo, exporto o banco de dados para o cartão SD. Uma vez que o banco de dados está no cartão SD, ele pode ser acessado conectando o dispositivo ao computador.
Veja esta postagem: Fazendo um backup do banco de dados para SDCard no Android
fonte
Se você pegar
experimentar
Observe a aspa dupla!
fonte
Eu simplesmente fiz:
Então posso depurar um banco de dados sqlite ou o que quer que eu queira fazer do shell com as permissões corretas.
fonte
Se um apk puder ser depurado, existe uma maneira de usar um programa denominado run-as do shell adb (não root) para copiar o arquivo privado de um aplicativo.
fonte
Aqui estão as instruções passo a passo - principalmente tiradas de uma combinação de outras respostas. Isso funciona com dispositivos que não estão desbloqueados.
Conecte seu dispositivo e inicie o aplicativo no modo de depuração.
Copie o arquivo de banco de dados da pasta do aplicativo para o cartão SD: execute:
./adb -d shell 'run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite> /sdcard/filename.sqlite'
Puxe os arquivos de banco de dados para sua máquina: execute:
./adb pull / sdcard / execute: ./adb
Instale o Firefox SQLLite Manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
Abra o Firefox SQLLite Manager e abra o arquivo de banco de dados da etapa 3 acima.
Aproveitar!
fonte
Android Studio 4.1 Adicionado um novo recurso para visualizar / editar bancos de dados Android SQLite.
Como abrir o Database Inspector
Para abrir o Database Inspector no Android Studio, você precisa selecionar
View > Tool Windows > Database Inspector
na barra de menu.Além disso, você precisa executar o aplicativo em um dispositivo com API de nível 26 ou superior.
Usando esta ferramenta você pode
Consultar seus bancos de dados
Modifique e depure seu banco de dados
fonte
No novo Android Studio 4.1, há o novo Database Inspector .
Você pode selecionar as seguintes opções na barra de menu
View > Tool Windows > Database Inspector
para abri-lo. Instruções mais detalhadas podem ser encontradas neste blog .Outra maneira é usar stetho para isso. Você adiciona a dependência e pode usar o Chrome DevTools (chrome: // inspect) para verificar o banco de dados quando o dispositivo é conectado.
fonte
Você precisa executar o adb como root ou usá-lo em um telefone com root.
Para executar o adb como root, use
adb root
Consulte também: Por que obtenho acesso negado à pasta de dados ao usar o adb?
fonte
Nenhuma das
run-as
soluções -and-cat-to-sdcard funcionou para mim no Android 4.4.2. Eu não tenho certeza, mas eu suspeito que pode ser devido àrun-as
ferramenta não lidar corretamente o novosdcard_r
esdcard_rw
permissões.Primeiro, tive que copiar o arquivo de banco de dados para
/files
o armazenamento interno privado do meu aplicativo:Em seguida, copiei
/sdcard/Android/data/com.example.myapp/files
em Javaland (isso requer aWRITE_EXTERNAL_STORAGE
permissão):Finalmente, copiei o arquivo para meu laptop:
fonte
Meu dispositivo não tinha sdcard
então a primeira solução não funcionou para mim.Se você estiver tendo um problema semelhante, tente assim:
fonte
/sdcard
não é necessariamente um cartão SD. No meu telefone, ele aponta para o armazenamento interno quando nenhum cartão SD físico está presente.Experimente este aplicativo: SQLiteWeb ( https://play.google.com/store/apps/details?id=br.com.cm.sqliteweb ). Ele fornece acesso remoto ao seu banco de dados sem retirá-lo.
Na versão paga, ele tem acesso root para banco de dados privado (/ data / data / package-name ...) ou implementar um Provedor de Conteúdo para conectar usando SQLiteWeb (Instruções dentro do aplicativo)
Mas se quiser ficar com a versão gratuita, você pode criar seu banco de dados em um armazenamento externo:
fonte
No OSX, usando @Tadas responda com automator e sqllitebrowser ( https://github.com/sqlitebrowser/sqlitebrowser ):
abra o Automator e crie um novo fluxo de trabalho.
adicione a ação "Executar Shell Script".
Cole isto:
source ~ / .bash_profile adb shell 'run-as cat /data/data/your_app_uid/databases/db.name> /tmp/db.name' adb pull /tmp/db.name ~ / open -a sqlitebrowser ~ / db. nome
clique em executar para atualizar o banco de dados em sqlitebrowser.
fonte
cd <ANDROID_SDK_PATH>
(para mim no Windowscd C:\Users\Willi\AppData\Local\Android\sdk
)cd platform-tools
adb shell
(isso funciona apenas se apenas um emulador estiver em execução)cd data/data
su
(ganhe privilégios de superusuário)cd <PACKAGE_NAME>/databases
sqlite3 <DB_NAME>
;
, caso contrário, a instrução não será emitida e será interrompida para uma nova linha).Nota: Use
ls
(Linux) oudir
(Windows) se precisar listar o conteúdo do diretório.fonte