Conectei o meu dispositivo ao vivo usando o adb e os seguintes comandos:
C:\>adb -s HT829GZ52000 shell
$ ls
ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
logo.rle
init.trout.rc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
$ cd data
cd data
$ ls
ls
opendir failed, Permission denied
Fiquei surpreso ao ver que tenho acesso negado. Como é que não consigo navegar pelos diretórios usando a linha de comando como esta?
Como obtenho acesso root no meu telefone?
Respostas:
Há duas coisas a serem lembradas se você deseja navegar por tudo no seu dispositivo.
adb root
fonte
A partir do nível 8 da API (Android 2.2), para o aplicativo depurável (aquele criado pelo Android Studio o tempo todo, a menos que a compilação do release tenha sido solicitada), você pode usar o
run-as
comando shell para executar um comando ou executável como um usuário / aplicativo específico ou simplesmente mude para o UID do seu aplicativo para poder acessar o diretório de dados .Listar o conteúdo do diretório yourapp:
Alterne para o UID do com.yourapp e execute todos os comandos adicionais usando esse uid (até você chamar
exit
):Nota 1 : existe um problema conhecido em alguns telefones HTC Desire. Devido a um proprietário / permissões não padrão do
/data/data
diretório, orun-as
comando falha ao executar nesses telefones.Nota 2 : Conforme apontado nos comentários de @Avio:
run-as
também há problemas com os telefones Samsung Galaxy S executando o Cyanogenmod em qualquer versão (de 7 a 10.1), pois nesta plataforma/data/data
há um link simbólico para/datadata
. Uma maneira de resolver o problema é substituir o link simbólico pelo diretório real (infelizmente isso geralmente requer acesso root).fonte
run-as com.mypackage
. O problema que encontrei ésqlite3 /data/data/com.mypackage/databases/mydb
"sqlite3: permissão negada". O sqlite3 pode ser executado apenas pela raiz?Antes de começarmos, você tem um telefone enraizado ? caso contrário, sugiro fortemente que é hora de você pular. 99% dos tutoriais que ajudam você a fazer isso exigem que você tenha um telefone root (sei que b / c eu gastei cerca de uma hora procurando uma maneira de fazer isso sem ter um telefone root .. não consegui encontrar .. ) também, se você pensar bem, seu iPhone também precisa estar enraizado para realizar a mesma tarefa. Portanto, é totalmente razoável. Mais sobre o enraizamento no final da resposta.
do seu tipo de linha de comando:
isso leva você à sua linha de comando do shell do Android (você deve ver algo assim:
shell@android:/ $
agora digite:isso deve levá-lo diretamente ao diretório de dados de
com.domain.yourapp
:se não tiver (ou seja, se você receber um erro), provavelmente não possui um telefone root ou não usou seus privilégios de usuário root. Para usar seus privilégios de usuário root, digite
su
na linha de comando adb e veja o que acontece. Se você receber um erro, seu telefone não estará enraizado. Se não estiver, faça o root primeiro e continue com estas instruções.a partir daí, você pode digitar
ls
e verá todos os diretórios, incluindo o dbs:depois disso, você pode usar o sqlite3 para navegar no dbase .. se você não o tiver instalado (você pode descobrir digitando
sqlite3
, se você conseguircommand not found
, precisará instalá-lo. Para instalar o sqlite, siga as instruções aqui .sobre o enraizamento: se você nunca enraizou seu telefone antes e está preocupado com isso, ele pode lhe dizer com total confiança que não há com o que se preocupar. existem toneladas de tutoriais rápidos e fáceis para fazer root no telefone, para praticamente todos os modelos novos e antigos, e você pode fazer root no seu telefone mesmo se você tiver um mac (eu enraíquei meu s3 no meu mac).
fonte
run-as
funcionar. Eu apenas tentei em uma produção-build Galaxy Nexus S.build the application as debuggable (either by building it with the Eclipse, or ant debug command)
podem parecer triviais para você, mas elas meio que me intimidam. Acho que minha resposta é mais para pessoas que se sentem confortáveis em fazer root em seus telefones Android, mas não são bem versadas no mundo dos desenvolvedores Android. Mas estou feliz que estamos tendo essa discussão .. Eu quero que os leitores da minha resposta para estar ciente das outras alternativas não enraizamento$ adb shell
$ cd / data
$ ls
opendir falhou, permissão negada
Você deve fazer isso:
ESTÁ BEM!
fonte
Tive um problema semelhante ao tentar operar em um Samsung Galaxy S. com root. Emitir um comando do shell do computador
falha com uma mensagem "não pode ser executado como raiz nas construções de produção". Aqui está um método simples que permite se tornar root.
Em vez do anterior, emita os dois comandos a seguir, um após o outro
Após o primeiro comando, se o prompt mudou de '>' para '$', como mostrado acima, significa que você entrou no ambiente de shell adb. Se subseqüentemente o prompt for alterado para '#' após a emissão do segundo comando, isso significa que agora você é o root. Agora, como root, você pode fazer o que quiser com o seu dispositivo.
Para voltar ao shell 'seguro', emita
Você verá que o prompt '$' reaparece, o que significa que você está no shell adb como usuário e não como root.
fonte
adb shell + su
resolveu a coisa de permissão irritante para sempre. Eu tive um problema sobresu: not found
no Android 4.3, mas desde que atualizei para o 4.4.2, o problema desapareceu. 4.3 parece ter problemas.Eu também tive muitos problemas com isso. Ainda não entendo completamente a permissão e a execução raiz, mas isso funcionou para mim (uma das respostas anteriores em parte) para copiar o arquivo de banco de dados de / data / data / [nome do pacote] /databases/my_db.db. A execução do shell root ou su no shell por algum motivo não funcionou, nem a cópia do arquivo db (embora eu pudesse navegar para o diretório), nem o sqlite3 .
Então, isso funcionou! No prompt de comando do DOS:
Agora vá para o diretório SDCARD e obtenha seu arquivo db_copy.db. Até isso estava oculto, mas consegui enviá-lo por e-mail. De volta ao Windows, consegui abrir o arquivo db com o SQLite Database Browser. :)
fonte
A seguir, estão as duas etapas para obter acesso root:
fonte
as compilações de produção não podem entrar / data / app
pode ser necessário alterar o proprietário certo para operá-lo.
fonte
O problema pode ser que precisamos fornecer especificamente acesso à raiz adb nas opções de desenvolvimento nos CMs mais recentes. Aqui está o que eu fiz.
depois de alterar as opções de desenvolvimento ...
fonte
se você conhece o pacote de aplicativos, pode
cd
diretamente para essa pasta.por exemplo
cd data/data/com.yourapp
isso o levará a um diretório que
read/writable
permite alterar os arquivos conforme necessário. Como a pasta é a mesma naemulator
, você pode usá-la para obter o caminho da pasta.fonte
Se você apenas deseja ver seu banco de dados e tabelas , a maneira mais fácil é usar
Stetho
. Ferramenta bastante legal para todos os desenvolvedores Android que usam oSQLite
buit byFacobook developed
.Steps to use the tool
Agora, crie seu aplicativo e, quando o aplicativo estiver em execução, você poderá navegar no banco de dados do aplicativo, abrindo o chrome no URL:
Capturas de tela do mesmo são as abaixo_
Espero que isso ajude a todos! :)
fonte
Isso funciona se o seu dispositivo Android estiver enraizado por qualquer meio (não tenho certeza se funciona para não enraizado).
adb shell
- acessar o shellsu
- se tornar o superusuário.Agora você pode ler todos os arquivos em todos os diretórios.
fonte
sem fazer o root do dispositivo, você pode acessar os arquivos da seguinte maneira: A captura de tela do cmd:
inicie o adb usando cmd na pasta platform-tools de acordo com seu usuário
ele pode estar em outra pasta depende de onde você o instalou.
exibir os dispositivos de trabalho.
para dizer a resposta do comando é
escreva o comando
vai abrir em
4. Acessando arquivos, liste todos os arquivos
e assim por diante, diretório chang para qualquer outro lugar, como a pasta de dados
fonte
su
) não funciona / não é permitido. Testando com Android 4.3.Quando você está no diretório shell do dispositivo. Apenas corra
Então você poderá acessar os dados / pasta.
fonte