Como posso acessar arquivos de log do Android no meu Nexus 7 sem acesso root?

9

Como o aLogcat agora não funciona mais com o Jelly Bean , como posso acessar os arquivos de log do sistema no meu dispositivo sem acesso root ou anexá-lo ao computador?

Eu tentei usar adb logcatno meu PC e funcionou bem, então sei que muitas mensagens estão sendo registradas.

O uso logcatdo Emulador de terminal Android no meu Nexus 7 mostra quase nenhuma saída e, a adb logcatpartir do Emulador de terminal Android , inicia o daemon, mas apenas diz - waiting for device -e nada mais aparece.

Então, é possível acessar arquivos de log do Android no meu Nexus 7 sem acesso root ?

Mark Booth
fonte
@ Izzy - O ponto desta pergunta é que todas as soluções na minha outra pergunta (à qual vinculei nesta questão) requerem acesso root. Embora essas soluções sejam úteis para quem enraizou seus dispositivos, eu queria uma solução mais específica para aqueles que não enraizaram seus dispositivos.
Mark Booth
Você pode encontrar o PhoneHome que vale uma olhada
Dori

Respostas:

12

Não, por motivos de segurança, não é possível acessar arquivos de log do Android no Nexus 7 (ou em qualquer outro dispositivo executando o Jelly Bean ou superior) sem acesso root. O Google mudou isso com o Jelly Bean.

Eu sugiro que você espere até os leitores de logcat como aLogCat e outros serem corrigidos (ou seja, eles exigirão acesso root para mostrar todos os logs então).

From AISEC-TR-2012-001-Android-OS-Security.pdf - 3.3 Modelo de permissão do Android :

A permissão READ_LOGS pode substituir o seguinte em muitos dispositivos, dependendo da versão do Android e, portanto, das versões dos aplicativos padrão instalados:

  • READ_CONTACTS

  • GET_TASKS - toda atividade iniciada é listada nos logs do sistema

  • READ_HISTORY_BOOKMARKS - abrir novas páginas da web é uma atividade do navegador e, portanto, registrada

  • READ_SMS

Todas as soluções abaixo requerem acesso root :

Você precisa executar o logcat como root em um shell ou concedê-lo manualmente através do comando shell pm (requer root) também funciona (consulte XDA , troque org.jtb.alogcat.donate com o nome do pkg do aplicativo):

pm grant org.jtb.alogcat.donate android.permission.READ_LOGS

Isso é para os preguiçosos e não é sugerido: se você estiver desesperado, descuidado e preguiçoso, poderá corrigi-lo, dando a cada aplicativo a permissão READ_LOGS, aplicando esse truque feio e inseguro ( Chainfire via twitter ):

chmod 04755 /system/bin/logcat

Para citar a postagem do G + de Koushik Dutta, desenvolvedor do CyanogenMod :

As permissões / comportamento do Log do Android foram alteradas no JellyBean?

Parece que se um aplicativo executar "logcat" agora, poderá ver apenas as entradas de log criadas por seu UID. Linhas de log de outros UIDs não são mostradas. Basicamente, parece estar filtrado agora.

Eu tenho as mesmas permissões de sempre. Também confirmou que o mesmo está acontecendo em outros aplicativos coletores de logs.

ce4
fonte
Não há como sem raiz que eu conheça. Por uma questão de segurança. Começando com o JellyBean, a permissão read_logs não precisa mais ser concedida (cada aplicativo pode visualizar seus próprios logs de qualquer maneira).
ce4
Obrigado pela edição e pelo link para xda, integrei isso.
ce4
Obrigado por adicionar a pm grantopção. Note que como eu agora dizer em minha outra resposta , você precisa especificar um pacote ligeiramente diferente se você não estiver usando a doar versão do aLogCat :pm grant org.jtb.alogcat android.permission.READ_LOGS
Mark Booth
O artigo referenciado faz para explicar como READ_LOGSé igual READ_CONTACTSem algumas plataformas. Eu acho que isso significa que alguns aplicativos colocam dados de contato nos logs, mas isso não é o mesmo READ_CONTACTS. Mas então eu diria que o artigo está escrito em tom alarmista.
Fluxo
READ_LOGS vaza muito mais informações do que apenas dados de contato. Há o nome do usuário, provavelmente o endereço do Gmail, locais, aplicativos instalados (até mesmo o uso do aplicativo) e assim por diante. Mais: foi usado para ler e extrair endereços de despejos de pilha de daemons do sistema nos dias anteriores ao ASLR por explorações de raiz. Agora que eles estão desativados em grande parte (4,1 ±), você pode obter proteção contra enxames (compare-a a não vacinar seu filho em uma população vacinada sem doenças). Problemas surgiram e o Google fez a coisa certa.
CE4
1

Estou confuso com isso, embora isso explique algumas coisas.

Executando o mesmo aplicativo no meu nexus7 e no galaxy nexus, ambos no jellybean, o telefone vê a saída de log de todos os aplicativos, o tablet não. Isso diria que não é geleia, é o nexo7. Fazendo o backup, acabei de verificar e os dois têm kernels diferentes. O tablet, com um mais novo.

Talvez seja o kernel atualizado que significa que os logs não aparecem.

Acho que vou ter que torcer depois de tudo: (

Russ Wheeler
fonte
Russ interessante, obrigado pela informação extra.
21712 Mark Booth
Na verdade, agora eu fui informado com segurança de que é porque o aplicativo que estou usando para ver os logs foi instalado na minha máquina quando eu tinha o ICS, por isso ele manteve as permissões para ver os logs.
precisa saber é o seguinte
1

Eu desenvolvi um aplicativo Logcat que usa uma abordagem alternativa. Ele utiliza o recurso de depuração remota. Você precisa habilitá-lo primeiro no telefone, mas isso deve ser feito apenas uma vez e, em seguida, você pode usar o aplicativo para recuperar todos os logs.

Anton Tananaev
fonte