Pergunta

Liguei para 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 eu tenho acesso negado. Como é que eu não consigo navegar em torno dos diretórios usando o comando como este?

Como faço para obter acesso root no meu telefone?

Foi útil?

Solução

Há duas coisas para se lembrar se você quiser navegar tudo no seu dispositivo.

  1. Você precisa ter um telefone com acesso root, a fim de procurar a pasta de dados em um telefone Android. Isso significa que ou você tem um dispositivo de desenvolvedor ( ADP1 ou um ION do Google I / O) ou você encontrou um maneira de 'root' o telefone de alguma outra forma.
  2. Você precisa estar executando ADB em modo root, faça isso executando: adb root

Outras dicas

A partir do nível API 8 (Android 2.2), para a aplicação debuggable (aquele construído por Android Estúdio todas as vezes a menos que o compilação de lançamento foi solicitado), você pode usar o comando shell run-as para executar um comando ou executável como um usuário / aplicação ou apenas específico mudar para o UID do seu aplicativo para que você possa acessar sua dados diretório.

Lista o conteúdo do diretório de yourapp:

run-as com.yourapp ls -l /data/data/com.yourapp

Mudar para UID de br.com.suaaplicacao e executar todos os outros comandos que usam esse uid (até que você chamar exit):

run-as com.yourapp
cd /data/data/com.yourapp
ls -l
exit


Nota 1 : há um problema com alguns telefones HTC desejo. Por causa de um proprietário não-padrão / permissões do diretório /data/data, comando run-as falhar para executar nesses telefones.

Nota 2 : Como apontado nos comentários por @Avio: run-as tem problemas também com telefones Samsung Galaxy S rodando Cyanogenmod em qualquer versão (7-10,1) porque neste /data/data plataforma é um link simbólico para /datadata. Uma maneira de resolver o problema é substituir o link simbólico com o diretório real (infelizmente isso geralmente requer acesso root).

antes de começarmos, você tem um enraizada telefone? Se não, eu sugiro fortemente que é hora de fazer o salto. 99% dos tutoriais que ajuda você a fazer isso exigem que você tenha um telefone enraizada (eu sei b / c Passei cerca de uma busca hora para uma maneira de fazer isso sem ter um telefone enraizada .. não poderia encontrar qualquer .. ) também se você pensar sobre isso, o iPhone também tem de ser enraizada para fazer essa mesma tarefa. Portanto, é totalmente razoável. Mais sobre enraizamento no final da resposta.

a partir de seu tipo de linha de comando:

adb shell

Isso leva você para a sua linha de shell comand android (você deve ver algo como isto: shell@android:/ $ agora digite:

shell@android:/ $run-as com.domain.yourapp

isso deve levá-lo diretamente para o diretório de dados de com.domain.yourapp:

shell@android:/data/data/com.domain.yourapp $ 

se isso não acontecer (ou seja, se você receber um erro), então você provavelmente não tem um telefone enraizada, ou você não usou seus privilégios de usuário root. Para utilizar o seu privilégios de usuário root, digite su na linha de comando adb e ver o que acontece, se você receber um erro, então você é telefone não está enraizada. Se não for, raiz-lo primeiro e depois continuar estas instruções.

De lá você pode digitar ls e você verá todos os diretórios incluindo os dbs:

shell@android:/data/data/com.domain.yourapp $ ls

cache
databases
lib
shared_prefs   

depois que você pode usar sqlite3 para navegar na dbase .. se você não tê-lo instalado (você pode encontrá-lo fora por sqlite3 digitação, se você receber command not found então você vai ter que instalá-lo. Para instalar SQLite, siga as instruções aqui .

sobre enraizamento: se você nunca enraizada seu telefone antes, e você está preocupado com isso estragar seu telefone, eu posso dizer com plena confiança de que não há nada para se preocupar. existem toneladas de tutoriais telefone enraizamento rápidas e fáceis para praticamente todos os novos e antigos modelos lá fora, e você pode raiz seu telefone, mesmo se você tem um Mac (I enraizada meu s3 com o meu mac) .

$ adb shell

$ cd / dados

$ ls

opendir falhou, Permissão negada


Você deve fazer isso:

$ adb shell

$ cd /data

shell@android:/data $ run-as com.your.package 

shell@android:/data/data/com.your.package $ ls

OK!

Eu tive um problema semelhante ao tentar operar em uma enraizada Samsung Galaxy S. A emissão de um comando do shell computador

> adb root

falha com uma mensagem "não pode ser executado como root na produção constrói". Aqui é um método simples que permite que para se tornar root.

Em vez do anterior, emitir os seguintes comandos um após o outro

> adb shell
$ su

Após o primeiro comando, se o prompt mudou de '>' para '$', como mostrado acima, isso significa que você digitou o ambiente adb shell. Se posteriormente o prompt mudou para '#' após a emissão do segundo comando, o que significa que agora você está raiz. Agora, como root, você pode fazer o que quiser com o seu dispositivo.

Para voltar ao shell 'seguro', assuntos

# exit

Você verá que as reaparece rápidas '$', o que significa que você está no adb shell como usuário e não como root.

Eu tinha um monte de problemas com isso também. Eu ainda não entendo completamente a permissão e raiz prazo, mas isso funcionou para mim (uma das respostas anteriores em parte) para copiar o arquivo de banco de dados / data / data / [nome do pacote] /databases/my_db.db. Correndo root shell , ou su no escudo por algum motivo não funcionou, nem copiar o arquivo db (eu poderia navegue até o diretório embora), nem sqlite3 .

Então, isso funcionou! No DOS prompt de comando:

C:\Program Files\Android\android-sdk\platform-tools>adb shell
1|shell@android:/ $ run-as de.vogella.android.locationapi.maps
run-as de.vogella.android.locationapi.maps
1|shell@android:/data/data/de.vogella.android.locationapi.maps $ cd /data
cd /data
shell@android:/data $ cd data
cd data
shell@android:/data/data $ cd de.vogella.android.locationapi.maps
cd de.vogella.android.locationapi.maps
shell@android:/data/data/de.vogella.android.locationapi.maps $ cd databases
cd databases
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $ ls
ls
bus_timetable_lines.db
bus_timetable_lines.db-journal
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $ cat bus
_timetable_lines.db > /sdcard/db_copy.db
 bus_timetable_lines.db > /sdcard/db_copy.db                                   <
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $exit   ^
exit
shell@android:/ $ exit
exit

C:\Program Files\Android\android-sdk\platform-tools>

Agora vá para o diretório SDCARD e obter o seu db_copy.db arquivo. Mesmo que estava escondido, mas eu consegui enviar e-mail. Voltar no Windows, eu era capaz de arquivo db aberto com SQLite Database Browser. :)

A seguir estão os dois passos para obter acesso root:

  1. seus dispositivos Android deve ser enraizado.
  2. Em ADB shell, digite su e o dispositivo android solicitará y / n? Você escolhe permitir.

produção constrói não pode entrar / data / app

drwxrwx--- system   cache             1970-01-01 08:00 cache
drwxrwxr-x root     system            1970-01-01 08:00 mnt 
drwxrwx--x system   system            1970-01-01 08:15 data

necessidade pode ser alterado para proprietário direito de operá-lo.

O problema pode ser que precisamos dar especificamente adb acesso root nas opções developnent nas últimas CMs .. Aqui está o que eu fiz.

abc @ abc-L655: ~ $ sudo adb kill-servidor
abc @ abc-L655: ~ root $ sudo adb start-servidor * não corra, Daemon. iniciando-se agora na porta 5037 * * Daemon iniciado com êxito * acesso root está desativado por configuração do sistema - permitirá em Configurações -> opções de desenvolvimento

depois de alterar as opções de desenvolvimento ...

abc@abc-L655:~$ sudo adb kill-server
abc@abc-L655:~$ sudo adb root start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting adbd as root
abc@abc-L655:~$ adb shell
root@android:/ # ls /data/ .... good to go.. 

Se você sabe que o pacote de aplicativos que você pode cd diretamente para essa pasta ..

por exemplo cd data/data/com.yourapp

isso vai deixá-lo em um diretório que é read/writable para que você possa alterar os arquivos conforme necessário. Desde a pasta é o mesmo no emulator, você pode usar isso para obter o caminho da pasta.

Se você só quer ver o seu DB & Tabelas , em seguida, a maneira esiest é usar Stetho. ferramenta fresca bonita para todos os desenvolvedores Android que usa SQLite buit por Facobook developed.

Steps to use the tool

  1. Adicionar abaixo dependeccy em seus application`s arquivo Gradle (Módulo: app)

'compilação 'com.facebook.stetho: stetho: 1.4.2'

  1. Adicionar abaixo linhas de código em seu método de Atividade onCreate ()
@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 Stetho.initializeWithDefaults(this);
 setContentView(R.layout.activity_main);
 }

Agora, construir a sua aplicação e Quando o aplicativo está sendo executado, você pode procurar seu banco de dados de aplicativos, pelo Chrome abertura na url:

chrome://inspect/#devices

Imagens do mesmo são os seguintes _

ChromeInspact

ChromeInspact

Seu DB

sua DB

Esperamos que isso ajude a todos! :)

sem enraizamento o dispositivo que você pode acessar os arquivos pela seguinte A imagem cmd:

  1. iniciar o adb usando cmd a partir da plataforma de ferramentas de pasta de acordo com o usuário

    cd C:\Users\YourUserName\AppData\Local\Android\sdk\platform-tools
    

    pode ser em outra pasta depende de onde você instalou-lo.

  2. exibir os dispositivos de trabalho.

    adb devices
    

    para dizer a responder OS o comando é

    List of devices attached
    0123456789ABCDEF     device
    
  3. escrever o comando

        adb -s 0123456789ABCDEF shell "su"
    

    ele será aberto no

        root@theDeviceName:/ #
    

arquivos 4.Accessing, lista todos os arquivos

ls

e assim-on diretório chang para qualquer outro lugar, como os dados de pasta

cd data/data

Quando você está no diretório de shell para o dispositivo. Basta executar

su - root

Em seguida, você deve ser capaz de acessar os dados / pasta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top