O acesso ao logcat precisa de raiz?

9

Meu dispositivo já está enraizado, é por isso que estou perguntando.

Você precisa de root para monitorar o fluxo do logcat no telefone? Se eu executasse o comando logcat de dentro de um terminal no telefone, isso funcionaria?

Wulfbane
fonte

Respostas:

15

Esses aplicativos gratuitos no Market afirmam poder exibir seu logcat e não fazem nenhuma menção à raiz. Você deve levar apenas alguns minutos para experimentá-los:

EDIT: Obrigado a @mente por me lembrar que esses aplicativos só permitem exibir o arquivo de log completo nas versões mais antigas do Android. O Android 4.1 trouxe um novo modelo de segurança em torno dos arquivos de log, o que significava que os aplicativos só podiam ler seus próprios arquivos de log e entradas de arquivo de log e não podiam ler as entradas de arquivo de log criadas pelo sistema ou por outros aplicativos.

No entanto, ainda existe uma maneira de o usuário de um aplicativo gerar um arquivo de log das entradas de log recentes do aplicativo a serem enviadas para um desenvolvedor e o proprietário de um telefone conceder permissões para permitir que um aplicativo leia o arquivo de log sem a raiz completa, mas isso exige que você use um comando ADB, que infelizmente o tira do alcance da maioria dos usuários comuns de telefone:

Se você deseja que o usuário forneça informações de depuração, ele pode gerar um relatório de erro com power + volume down + volume up, que inclui os logs e muitos outros dados, e abre automaticamente o aplicativo de email para enviar tudo (mais uma captura de tela). Estávamos discutindo que também deveríamos ter uma maneira mais fácil de gerá-los. Vou adicionar algo ao aplicativo de configurações.

Também comecei a introduzir o conceito de permissão de "desenvolvimento", na qual os logs de leitura são classificados como. Isso permite que o aplicativo solicite a permissão, mas não a obtenha na instalação. No entanto, você pode concedê-lo com um comando adb shell após a instalação. Em algum momento depois, espero ter uma interface do usuário no sistema para fazer isso, mas vamos adiar isso para ter cuidado com a forma como apresentamos isso.

Trecho de uma postagem no Google Groups por Dianne Hackborn, engenheira de estrutura do Android. Minha ênfase.

O comando ADB mencionado para conceder uma permissão de aplicativo para ler os logs é:

adb shell pm grant <pkg> android.permission.READ_LOGS

Essa configuração deve sobreviver a reinicializações e atualizações do aplicativo (mas não desinstala / reinstala).

GAThrawn
fonte
A partir do Android 4.1, você precisa de acesso root para ler os logs de outros aplicativos. O desenvolvedor do CatLog postou uma explicação . Suponha que esses aplicativos obras de <4.1 versões
mente
11
Este atalho não funciona no meu Android 4.1.2
mente
Eu criei um utilitário para os logs coletar de um PC: gist.github.com/hrj/5983971
HRJ
4

Você não precisa fazer o root do seu telefone para rodar adb logcatcom o SDK do Android, mas eu o testei no meu Emulador de Terminal e precisava ser root (usei o sucomando - meu telefone já está enraizado) para executar o logcat no terminal no meu telefone.

Então, sim: se você possui root no seu telefone, pode executar o logcat a partir de um terminal no seu telefone.

Amanda
fonte
1

Não, você não precisa de raiz para obter informações sobre o logcat.

Para fazer isso, você provavelmente deseja fazer o download do SDK do Android e executar "adb logcat", usando a ferramenta adb que acompanha o SDK. Como alternativa, você pode instalar o plug-in ADT Eclipse e usar seu prático visualizador de Logcat de streaming.

Eric Mill
fonte
eu quero fazer isso a partir do telefone, e não a partir de uma máquina remota com o SDK
Wulfbane
1

Não, você não precisa de raiz para acessar o logcat. Meu dispositivo (Samsung Galaxy Note, Gingerbread 2.3.6 com ROM de estoque) não está enraizado (ainda!) E usei as seguintes maneiras de acessar o log no meu dispositivo:

  • Aplicativo CatLog
  • aplicativo aLogcat
  • Aplicativo SSHDroid ativado e conectado ao terminal do dispositivo usando um cliente SSH
  • Usando o SDK do Android e executando adb logcat

No entanto, o aplicativo Terminal não permite executar o logcat e fornece "permissão negada". Não sei por que.

Iravanchi
fonte
sim, em Gingerbread ... mas de hoje Android faz requerem raiz.
NH.
1

Parece que você não pode executar o logcat no Emulador de Terminal sem ter root no seu telefone. Nesse caso, você deve primeiro su. AFAIK, ele vem de Permissões do Android: o Emulador de Terminal simplesmente não tem permissões suficientes para visualizar o log do dispositivo. Então o sistema diz Permissão negada.

Por outro lado, como outros disseram, existem muitos aplicativos que permitem visualizar o log do dispositivo apenas porque eles solicitam a permissão.

atomontage
fonte
0

O aplicativo Android System Info tem a capacidade de enviar informações de log para a tela que, até onde eu sei, é a mesma informação de log que o logcat cospe.

Bill Best
fonte
Você tem um link para esse aplicativo? Não consigo encontrá-lo no mercado?
precisa
@GAThrawn Caso ainda esteja interessado: links para a página inicial e a Google Play Store .
Zuul
0

O Logcat não precisa de raiz. Simples - é um padrão de fato geral em relação a diferentes versões do Android e faz parte do Android, independentemente de você estar ou não enraizado e é um meio padrão para diagnosticar problemas como no exemplo - você instala um aplicativo, o força do aplicativo fechar, você reclama com o desenvolvedor do referido aplicativo, as chances são muito altas de que o desenvolvedor peça "envie o logcat", independentemente de você estar ou não enraizado!

o aLogCat é uma maneira de coletar informações, com a opção de fazer logon no layout da página da Web ou em texto sem formatação, lembre-se: se você o programar para fazer o log em uma determinada frequência, como a cada 15 minutos, o SDCard será preenchido rapidamente.

Outro aspecto, o uso do logcat dependerá do kernel em termos de quanto ele pode armazenar - em qualquer kernel usado pela ROM, a fonte para o log do nível do kernel, onde reserva a memória para o serviço de logcat pode ser encontrado drivers/staging/android/logger.cusando as definições apropriadas, por exemplo:

DEFINE_LOGGER_DEVICE (log_main, LOGGER_LOG_MAIN, 64 * 1024) DEFINE_LOGGER_DEVICE (log_events, LOGGER_LOG_EVENTS, 256 * 1024) DEFINE_LOGGER_DEVICE (log_radio, LOGGER_ERG_LOG_DE_LOGO_LOG_04_24_0424)

Novamente, a milhagem variará, alguns desenvolvedores de tais ROMs escolherão minimizar o consumo para reduzir as despesas gerais de memória ...

t0mm13b
fonte