Save the date! Android Dev Summit is coming to Mountain View, CA on November 7-8, 2018.

Criar perfis e depurar os APKs pré-compilação

O Android Studio 3.0 permite que você crie perfis e depure APKs sem precisar compilá-los de um projeto do Android Studio. No entanto, é necessário garantir que você esteja usando uma versão depurável do APK.

Para iniciar a depuração de um APK, clique em Profile or debug APK na tela Welcome do Android Studio. Ou, se já tiver um projeto aberto, clique em File > Profile or debug APK na barra de menus. Na próxima caixa de diálogo, selecione o APK que deseja importar para o Android Studio e clique em OK. Você deve ver algo semelhante à figura 1.

Figura 1. Importando um APK pré-compilado no Android Studio.

Observação: quando você importar um APK para o Android Studio, o ambiente de desenvolvimento integrado cria um novo projeto no diretório principal e cria uma cópia local do APK de destino. Isso significa que, se você recompilar ou atualizar o APK original, será necessário importar manualmente a versão atualizada novamente para o Android Studio.

A visualização Android no painel Project permite que você inspecione o seguinte conteúdo do seu APK:

  • APK file: clicar duas vezes no APK abre o analisador de APK.
  • manifests: os manifestos do aplicativo, extraídos do APK.
  • java: contém o código Java que o Android Studio extrai (para arquivos .smali ) dos arquivos DEX do seu APK. Cada arquivo .smali nesse diretório corresponde a uma classe Java.
  • cpp: se o aplicativo incluir o código nativo, esse diretório contém as bibliotecas nativas do seu APK (arquivos .so).
  • External Libraries: contém o Android SDK.

Você pode usar o Android Profiler para começar a testar o desempenho do seu aplicativo — entretanto, o profiler funciona somente com os processos Java do aplicativo. Para depurar o código nativo e o Java do aplicativo usando pontos de interrupção, você primeiro deve anexar fontes Java e anexar símbolos de depuração nativos.

Anexar fontes Java

Por padrão, o Android Studio extrai o código Java do seu APK e os salva como arquivos .smali. Para depurar o código Java usando pontos de interrupção, você deve anexar as fontes Java para cada arquivo .smali que você deseja depurar.

Para anexar fontes Java, faça o seguinte:

  1. Clique duas vezes em um arquivo .smali no painel Project (use a visualização Android). Após abrir o arquivo, o editor exibe um banner amarelo de aviso, solicitando que você selecione as fontes Java, conforme é mostrado na figura 1.
  2. Clique em Attach Java Sources no topo da janela do editor.
  3. Navegue para o diretório com os arquivos de fonte Java do aplicativo e clique em Open.

Na janela Project, o ambiente de desenvolvimento integrado substitui arquivos .smali pelos arquivos .java correspondentes. Agora, você pode adicionar pontos de interrupção e depurar seu aplicativo normalmente.

Anexar símbolos de depuração nativos

Se seu APK incluir bibliotecas nativas (arquivos .so) que não tenham símbolos de depuração, o ambiente de desenvolvimento integrado mostra um aviso na janela Messages, semelhante ao mostrado na figura X. Não é possível depurar o código nativo do APK ou usar pontos de extremidade sem bibliotecas nativas depuráveis. Se você ainda não fez isso, não deixe de baixar o NDK e as ferramentas.

Para anexar bibliotecas nativas depuráveis, faça o seguinte:

  1. No diretório cpp na janela Project, clique duas vezes em um arquivo de biblioteca nativa que não inclua símbolos de depuração. O editor mostra uma tabela de todos os ABIs suportados por seu APK.
  2. Clique em Add no canto superior direito da janela do editor.
  3. Navegue até o diretório que inclua as bibliotecas nativas depuráveis que você deseja anexar e clique em OK.
  4. Se o APK e as bibliotecas nativas depuráveis foram compiladas usando uma estação de trabalho diferente, você precisa especificar caminhos locais para os símbolos de depuração seguindo estas etapas:
    1. Adicione caminhos locais para os símbolos de depuração ausentes editando o campo na coluna Local Paths na seção Path Mappings da janela do editor, conforme a figura 2. O ambiente de desenvolvimento integrado mapeia automaticamente caminhos para um NDK remoto para os caminhos no download do NDK local.
    2. Clique em Apply.

      Figura 2. Fornecendo caminhos para os símbolos locais de depuração.

Agora você deve ver os arquivos de fonte nativos na janela Project. Abra esses arquivos nativos para adicionar pontos de interrupção e depurar seu aplicativo normalmente.

Problema conhecido: ao anexar símbolos de depuração em um APK, o APK e os arquivos .so depuráveis devem ser compilados usando a mesma estação de trabalho ou servidor de compilação.