O serviço de diagnóstico do cliente permite extrair remotamente logs de diagnóstico de usuários ou dispositivos específicos para investigar falhas e exceções. O console mPaaS oferece dois canais de entrega: Message Push Service (MPS) e Mobile Sync Service (MSS).
Para diagnosticar um cliente Android, siga estas etapas em ordem:
Pré-requisitos
Antes de começar, verifique se você tem:
O componente Mobile Analysis Service integrado, com o relatório de logs funcionando corretamente. Para mais informações, consulte Integrar o Mobile Analysis Service em um cliente Android.
-
O componente Message Push Service ou Mobile Sync Service integrado.
Se utilizar o canal Message Push Service, siga as etapas em Guia de Introdução para Integrar o Message Push Service a um cliente Android.
Caso utilize o canal Mobile Sync Service, consulte Integração com Android Integrar o Mobile Sync Service em um cliente Android.
Inicializar o serviço de diagnóstico
O serviço de diagnóstico aceita dois canais para extração de logs: Mobile Sync Service e Message Push Service. As etapas de inicialização variam conforme o canal.
Usar o canal Message Push Service
Após iniciar o aplicativo, conclua as seguintes etapas:
Inicialize o serviço de push para estabelecer uma conexão persistente entre o cliente e o gateway do Message Push Service. O kit de desenvolvimento de software (SDK) de push mantém este canal próprio. Inicializar o SDK de push
Vincule um ID de usuário. Este ID é definido pelo desenvolvedor e pode ser uma identidade do seu sistema de usuários ou outro parâmetro mapeável a um usuário específico, como uma conta ou número de telefone. Reportar um ID de usuário
Usar o canal Mobile Sync Service
Depois que o aplicativo for iniciado, chame os métodos a seguir para inicializar o canal de sincronização. É obrigatório chamar MPLogger.setUserId antes de inicializar o canal. A inicialização falhará se nenhum ID de usuário estiver definido.
-
Acionar tarefas de diagnóstico por ID de usuário:
// Set the userId MPLogger.setUserId(String userId); // Initialize the Sync channel. You must set the userId first, or the initialization will fail. MPDiagnose.initSyncChannel(Context context); -
Acionar tarefas de diagnóstico por ID de dispositivo:
NotaO acionamento de tarefas de diagnóstico por dispositivo é suportado apenas na baseline 10.2.3.73 e versões posteriores.
// Set the userId MPLogger.setUserId(String userId); // Initialize the Sync channel. You must set the userId first, or the initialization will fail. MPDiagnose.initSyncDeviceChannel(Context context);
Gravar logs de diagnóstico
O serviço de diagnóstico envia apenas logs gravados com MPLogger. Logs gerados via android.util.Log não são coletados. Substitua todas as chamadas de log pelos métodos equivalentes do MPLogger, que espelham a API Log padrão:
void verbose(String tag, String msg);
void debug(String tag, String msg);
void info(String tag, String msg);
void warn(String tag, String msg);
void warn(String tag, Throwable t);
void warn(String tag, String msg, Throwable tr);
void error(String tag, String msg);
void error(String tag, Throwable t);
void error(String tag, String msg, Throwable t);
void print(String tag, String msg);
void print(String tag, Throwable t);
O MPLogger grava no logcat apenas em builds de depuração. Os logs são suprimidos em builds de release. Os logs de diagnóstico são armazenados no dispositivo nos seguintes caminhos:
-
Build de depuração:
/sdcard/[PackageName]/applog. Se este caminho não permitir gravação, o SDK usará o caminho da build de release como fallback.ImportanteSe o
targetSdkVersionfor 30 ou superior e o dispositivo executar o Android 11 ou superior, o caminho de armazenamento será:/storage/emulated/0/Android/data/com.mpaas.demo/cache/[PackageName]/applog/. Build de release:
/data/data/[PackageName]/files/applog.
Personalizar parâmetros de armazenamento de logs de diagnóstico
Por padrão, o armazenamento local de logs retém dados por 7 dias, com limite de tamanho de arquivo de 15 MB. Quando esse limite é excedido, um quarto dos arquivos de log é excluído.
Adicione as seguintes entradas <meta-data> ao manifesto do seu aplicativo para substituir os padrões:
// Maximum size of log files in MB
<meta-data android:name="category_applog_max_size" android:value="15" />
// Log storage duration in days
<meta-data android:name="category_applog_expires_time" android:value="7" />
A personalização dos parâmetros de armazenamento de logs de diagnóstico é suportada apenas na baseline 10.2.3.73 e versões posteriores.
Extrair logs do console
Com o cliente gravando logs via MPLogger, extraia os logs pelo console para investigar falhas ou exceções em um modelo de dispositivo específico ou para um usuário determinado.
Etapa 1: Crie uma tarefa de extração de logs
Faça login no console mPaaS e selecione o aplicativo desejado.
No painel de navegação à esquerda, clique em Mobile Analysis Service > Log Management.
Na aba Pull real-time logs, clique em Add.
Preencha os detalhes da tarefa. Defina o User ID com o identificador que seu app utiliza no sistema de login. Use o mesmo valor passado para
MPLogger.setUserId(String userId)ou reportado via Message Push Service.Clique em OK para criar a tarefa.
Etapa 2: Acionar a tarefa de extração de logs
Na lista de tarefas de extração de logs, localize a tarefa recém-criada, selecione um Trigger Channel e clique em Trigger na coluna Operations.
-
Atualize a página após alguns instantes para verificar o status da tarefa:
Task processed: Clique em View para baixe o log de diagnóstico.
Push/Sync service successfully called: A mensagem de upload foi enviada, mas o cliente ainda não recebeu ou enviou o log. Confirme se o processo do aplicativo continua em execução. Caso tenha parado, reinicie o app. Se o status não mudar após a reinicialização, consulte Solução de problemas.
Solução de problemas
Se a extração de logs falhar, siga as etapas correspondentes ao seu canal de entrega.
Usar o canal Message Push Service
No console mPaaS, acesse Message Push Service e envie uma mensagem comum para o ID de usuário alvo. Isso confirma se o canal Message Push Service está funcionando antes de depurar o fluxo de diagnóstico.
Se o canal estiver operacional, limpe o logcat, alterne para o processo de push e clique novamente em Trigger no console. Monitore o logcat buscando as tags a seguir.
Filtre por
mPush14para verificar se a mensagem de diagnóstico foi recebida. Se nenhuma mensagem aparecer, o canal de push pode estar desconectado.
-
Após confirmar o recebimento da mensagem, verifique no logcat se há evidências de encaminhamento ao
MonitorService. Se um erro indicar que oClientMonitorServicenão foi encontrado, atualize o SDK usando o plug-in mPaaS:Para a baseline 10.1.32, faça upgrade para 10.1.68 e atualize o componente para a versão mais recente.
Para as baselines 10.1.60 ou 10.1.68, atualize o componente para a versão mais recente.

-
Depois de confirmar que o
MonitorServiceiniciou, filtre porAlipayLogUploaderpara verificar a existência de um log de diagnóstico local. O log abaixo indica que há um log local disponível para upload.
O log a seguir indica que não existe nenhum log de diagnóstico local.

Caso não exista log local, verifique os dois pontos abaixo:
O intervalo de tempo definido na tarefa de extração deve ser de pelo menos 1 hora. Além disso, o aplicativo precisa estar em execução e gravando logs com
MPLoggerdurante todo esse período.-
O aplicativo deve declarar e solicitar dinamicamente esta permissão:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Uma vez confirmada a existência do log local, filtre por
HttpUploadpara validar se o upload teve sucesso. UmresponseCodeigual a 200 confirma o êxito do envio.
Usar o canal Mobile Sync Service
Limpe o logcat, mude para o processo principal e inicialize o canal de sincronização. Filtre por
isConnectedpara confirmar que a conexão do canal de sincronização foi estabelecida.
-
No console mPaaS, clique novamente em Trigger para a tarefa de diagnóstico. Filtre por
MPDiagnosepara verificar se a mensagem de diagnóstico foi recebida e se oMonitorServiceiniciou.Se nenhuma mensagem for recebida, confirme se o ID de usuário configurado no app corresponde ao ID inserido na tarefa de diagnóstico. Caso um erro informe que o
ClientMonitorServicenão foi encontrado, atualize o SDK usando o plug-in mPaaS:Para a baseline 10.1.32, faça upgrade para 10.1.68 e atualize o componente para a versão mais recente.
Para as baselines 10.1.60 ou 10.1.68, atualize o componente para a versão mais recente.

-
Após confirmar a inicialização do
MonitorService, alterne para o processo de push e filtre porAlipayLogUploaderpara verificar a existência de um log de diagnóstico local. O log abaixo indica que há um log local disponível para upload.
O log seguinte indica que não existe log de diagnóstico local.
Se não houver log local, verifique os dois itens a seguir:
O intervalo de tempo definido na tarefa de extração deve ser de pelo menos 1 hora. Além disso, o aplicativo precisa estar em execução e gravando logs com
MPLoggerdurante todo esse período.-
O aplicativo deve declarar e solicitar dinamicamente esta permissão:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Confirmada a existência do log local, filtre por
HttpUploadpara verificar se o upload foi bem-sucedido. UmresponseCodeigual a 200 confirma o sucesso do envio.