• Nenhum resultado encontrado

3. A PLATAFORMA ANDROID

3.7. A PLATAFORMA ANDROID SOB A ÓTICA PERICIAL

3.7.1. O SDK do Android

O SDK do Android é um conjunto de ferramentas que possuem como objetivo fornecer aos desenvolvedores da plataforma um ambiente completo para criação e depuração dos aplicativos Android. O aplicativo principal é o SDK Manager, onde é possível baixar as APIs referentes às diferentes versões do Android e executar emuladores do sistema. O SDK também disponibiliza algumas outras ferramentas, a exemplo da ferramenta “dx” usada para gerar o arquivo executável Dalvik e da ADB (Android Debug Bridge), usada para se conectar a um emulador ou dispositivo Android em modo de depuração USB e realizar algumas ações no sistema via linha de comando.

O ADB provê uma interface ao dispositivo Android conectado ao computador ou a um emulador Android gerenciado pelo SDK Manager. Normalmente encontra-se instalado no diretório <sdk>/plataform-tools.

É uma ferramenta que trabalha na arquitetura cliente-servidor com três componentes (Google Inc, 2011a):

1) Cliente: é utilizado por um terminal ou linha de comando através da ferramenta ADB na máquina à qual o dispositivo está conectado.

2) Servidor: também fica em execução na máquina à qual o dispositivo está conectado. É executado em segundo plano como um serviço e gerencia a comunicação entre o cliente o serviço (daemon) que está em execução no dispositivo.

3) Serviço (daemon): é executado em segundo plano no dispositivo.

O servidor é inicializado quando um cliente faz uma chamada para realizar uma conexão a um dispositivo Android (Google Inc, 2011a). A partir do momento que o servidor consegue estabelecer uma conexão com o serviço no dispositivo ou emulador, comandos ADB podem ser utilizados para gerenciar o dispositivo. Diferentemente de conexões realizadas a emuladores Android, só é possível realizar uma conexão com o serviço em um dispositivo físico se estiver habilitada a opção “Depuração USB” nas suas configurações. Caso a depuração USB não esteja habilitada, não é possível realizar conexão ADB com o dispositivo.

Por meio ADB, via do modo de depuração, é possível conectar ao dispositivo Android e obter um shell. Pode-se instalar aplicativos, copiar arquivos, obter informações do sistema e obter informações de log (logcat). A Figura 3.3 possui alguns dos comandos que podem ser executados a partir da ferramenta ADB. Por meio de um shell no dispositivo, podem ser executados comandos nativos do ambiente GNU/Linux diretamente no dispositivo ou emulador. Alguns exemplos de comandos que podem ser executados no shell são: ls, cd,

rmdir, mkdir, cp, rm, cat, pwd. Entretanto é um shell básico, sem comandos mais avançados.

Por padrão, a conexão via ADB em um dispositivo físico é realizada com o usuário “shell” (uid=2000), que é muito restritivo; nas conexões feitas para um emulador a permissão é de super usuário (root). Para se ter o acesso a um shell com permissões de super usuário em um dispositivo físico, é preciso que o sistema esteja com acesso à root instalado, que será explicado adiante.

Android Debug Bridge version 1.0.26

-d - directs command to the only connected USB device returns an error if more than one USB device is present.

-e - directs command to the only running emulator. returns an error if more than one emulator is running.

-s <serial number> - directs command to the USB device or emulator with the given serial number. Overrides ANDROID_SERIAL

environment variable. device commands:

adb push <local> <remote> - copy file/dir to device adb pull <remote> [<local>] - copy file/dir from device adb shell - run remote shell interactively adb shell <command> - run remote shell command adb logcat [ <filter-spec> ] - View device log

adb install [-l] [-r] [-s] <file> - push this package file to the device and install it ('-l' means forward-lock the app)

('-r' means reinstall the app, keeping its data)

('-s' means install on SD card instead of internal storage)

adb uninstall [-k] <package> - remove this app package from the device adb help - show this help message

adb version - show version num

Figura 3.3 - Ajuda da ferramenta ADB com lista de parâmetros da ferramenta.

Por meio do shell, é possível executar comandos como o dmesg, que imprime na tela informações de debug do Kernel do Linux; o dumpsys retorna informações sobre o sistema e os aplicativos9. Por meio deste comando, pode-se obter informações do estado do Wi-Fi, das janelas do sistema, da CPU, da memória, das atividades, dos processos, dentre outras (Paula, 2011).

O Android também fornece em seu shell o logcat (vide Figura 3.4). Por meio do logcat é possível visualizar e filtrar as mensagens de debug do sistema e de aplicações, armazenadas pelo próprio sistema que utiliza buffers circulares (Google Inc, 2011e).

Usage: logcat [options] [filterspecs] options include:

-s Set default filter to silent. Like specifying filterspec '*:s'

-f <filename> Log to file. Default to stdout

-r [<kbytes>] Rotate log every kbytes. (16 if unspecified). Requires -f

-n <count> Sets max number of rotated logs to <count>, default 4 -v <format> Sets the log print format, where <format> is one of: brief process tag thread raw time threadtime long

-c clear (flush) the entire log and exit -d dump the log and then exit (don't block)

-t <count> print only the most recent <count> lines (implies -d) -g get the size of the log's ring buffer and exit -b <buffer> request alternate ring buffer

('main' (default), 'radio', 'events') -B output the log in binary filterspecs are a series of

<tag>[:priority]

where <tag> is a log component tag (or * for all) and priority is: V Verbose D Debug I Info W Warn E Error F Fatal

S Silent (supress all output)

'*' means '*:d' and <tag> by itself means <tag>:v

If not specified on the commandline, filterspec is set from ANDROID_LOG_TAGS.

If no filterspec is found, filter defaults to '*:I'

If not specified with -v, format is set from ANDROID_PRINTF_LOG or defaults to "brief"

Figura 3.4 - Comandos e filtros disponíveis no logcat.