Guia Passo-a-Passo: Corrigindo Problemas com o uiautomatorviewer

nitramchips

Martin Sch

Posted on October 25, 2023

Guia Passo-a-Passo: Corrigindo Problemas com o uiautomatorviewer

Olá, Devs Android! Se você já tentou automatizar testes de UI para seus aplicativos usando Espresso e UIAutomator, provavelmente já se deparou com a ferramenta uiautomatorviewer. Esta ferramenta é inestimável para entender e encontrar elementos da tela do app. No entanto, enfrentei um problema onde ela parou de funcionar. Neste artigo, vou guiá-los através dos passos que segui para resolver esse problema.

O problema

Ao tentar executar o uiautomatorviewer, me deparei com o seguinte erro:
Mensagem no terminal informando:Error: Could not create the Java Virtual Machine.<br>
Error: A fatal exception has occurred. Program will exit.

Após muita pesquisa e tentativa e erro, descobri que a solução se resume a dois passos principais.

Passo 1: Alterar a versão do Java para 1.8

O primeiro passo é garantir que você esteja usando a versão 1.8 do Java. Mas, se você é como eu e trabalha em vários projetos com diferentes versões do Java, alternar entre elas pode ser uma dor de cabeça. Aqui é onde o jenv se torna útil.

Configurando o jenv:

  • Instale o jenv usando o Homebrew:
brew install jenv
Enter fullscreen mode Exit fullscreen mode
  • Adicione o caminho jenv e inicialize-o em seu shell (estou assumindo que você está usando zsh):
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
Enter fullscreen mode Exit fullscreen mode
  • Recarregue o shell para aplicar as alterações:
source ~/.zshrc
Enter fullscreen mode Exit fullscreen mode

Instalando e Definindo Java 8 com jenv:

  1. Instale o Java 8:
brew install openjdk@8
Enter fullscreen mode Exit fullscreen mode
  1. Verifique as JVMs disponíveis no seu sistema:
/usr/libexec/java_home -V
Enter fullscreen mode Exit fullscreen mode

Isto deverá mostrar as JVMs disponíveis, e você deverá encontrar uma linha semelhante a:

1.8.0_212, x86_64: "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Enter fullscreen mode Exit fullscreen mode
  1. Adicione o Java 8 ao jenv:
jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Enter fullscreen mode Exit fullscreen mode

Ele deve confirmar com:

openjdk64-1.8.0.212 adicionado
1.8.0.212 adicionado
1.8 adicionado
Enter fullscreen mode Exit fullscreen mode
  1. Defina a versão do Java no sistema para Java 8:
jenv global 1.8
Enter fullscreen mode Exit fullscreen mode
  1. Verifique a versão do Java:
java -version
Enter fullscreen mode Exit fullscreen mode

Agora, isso deve indicar que você está usando o Java 8.

E pronto! Você instalou e definiu o Java 8 como a versão padrão usando jenv.

Passo 2: Baixando o novo arquivo SWT

Após fazer a alteração na versão do Java, me deparei com um segundo erro:
Segunda mensagem de erro, dessa vez é um erro de interface do uiautomator
O próximo passo é baixar uma versão específica de um arquivo SWT que reside em um diretório específico do Android SDK.

  1. Baixar a versão 4.20 do swt.jar:
  2. Extraia o swt.jar do arquivo baixado
    • Dentro do arquivo zip existe um swt.jar.
  3. Renomear o arquivo extraído:
    • Mude o nome do swt.jar baixado para swt2.jar.
  4. Copiar o arquivo renomeado:
    • Mova o swt2.jar para o diretório Android/sdk/tools/lib/x86_64/.
    • Importante: Não substitua ou delete o arquivo original.
  5. Teste:
    • Inicie o uiautomatorviewer para verificar se a atualização foi bem-sucedida.

Dica ao Iniciar o uiautomatorviewer: Ao lançar o uiautomatorviewer, redimensione a janela.

Image description

Conclusão

Com essas duas alterações, consegui fazer o uiautomatorviewer funcionar perfeitamente novamente. Espero que este guia ajude outros desenvolvedores que enfrentam o mesmo problema. Se você tiver dúvidas ou sugestões, sinta-se à vontade para deixar um comentário abaixo!

Links


Enter fullscreen mode Exit fullscreen mode
💖 💪 🙅 🚩
nitramchips
Martin Sch

Posted on October 25, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related