Como rodar um projeto Expo por um Virtual Device no WSL
Tags: wsl, reactnative, javascript, expo
Published: 2024-03-04 20:30:00

Para seguir com esse artigo, você precisará concluir o ultimo [artigo ensinando a configurar o WSL para o Expo](lhttps://dev.to/devhat/como-configurar-o-expo-no-wsl-bo3)

## 1. INSTALANDO O WSA

- Agora para rodar o Expo em um `Virtual Device` no `WSL (Window Subsystem for Linux)` nós precisamos instalar o `WSA (Windows Subsystem for Android)`
- Abra [este link](https://github.com/MustardChef/WSABuilds?tab=readme-ov-file) e procure por essa tabela no `README`, feito isso baixe a ultima versão estável do `WSA`.

![tabela mostrando para baixar a versao estavel do wsa](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ajxwtd391b96wnlwiqnu.png)

- Mova o arquivo `ZIP` que você acabou de baixar para a Root da pasta `C:\` igual você fez com o script de `PowerShell` no [artigo 1](link do artigo 1).
- Agora com o `ZIP` no lugar certo extraia o arquivo com `winRAR` ou `7z` e exclua o arquivo `.ZIP`, entre na pasta que acabou de ser extraída e veja se tem uma pasta dentro, se houver, recorte ela e cole-a no root do seu C: novamente.
- Abra a pasta, clique com o botão direito no Install.ps1 e clique em `Executar com o PowerShell`.
	- Caso [você encontre esse erro](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/74tnainl10m7lk5kcwpw.png) 
![o arquivo C:\WSA_2311.400000.5.0_x64\Install.ps1 nao pode ser carregado porque a execucao de scripts foi desabilitada neste sistema. Para obter mais informacoes consulte about_Execution_policies em https://go.microsoft.com/fwlink/?linkID=135170](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/74tnainl10m7lk5kcwpw.png)

	- Clique no arquivo `Run.bat` e execute ele.
- Depois que o comando rodar, vão aparecer algumas popups e umas caixas de dialogo clique em continue e deixe os processos carregarem. Não feche inicialmente nenhuma aba, apenas minimize.
- Procure a aba que se chame `Windows Subsystem for Android` com o titulo `System`
- Vá no canto superior esquerdo e selecione `advanced settings` e ative o `developer mode` e permita as coisas que precisarem permitir em nível de admin.

## 2. INSTALANDO O SDK DO ANDROID
- Nós precisamos desse `sdk` para termos acesso as `API's Nativas do android` pelo `javascript`, sem isso nós não conseguiremos criar os nossos aplicativos de forma adequada. Além disso precisamos do `sdk` para prosseguir pro próximo passo 
- Siga o passo de instalação desse GIST {% gist https://gist.github.com/steveclarke/d988d89e8cdf51a8a5766d69ecb07e7b file=Install Android SDK CLI Ubuntu 20.04 WSL2.md %}
	- Rode os comandos um por um pra evitar qualquer problema.
	- Lembre-se de trocar o path de `Sdk` para `sdk` pois o padrão do expo é `sdk`.
		- **`NÃO`** rode o ultimo comando do `gradle`.
## 3. INSTALANDO O ADB
- O `ADB (Android Debug Bridge)` é uma ferramenta de linha de comando que faz parte do `SDK` do `Android`. Ele cria a conexão do nosso `WSL` ao `WSA`, sem ele nós não conseguiremos fazer essa conexão e por consequência não conseguiremos usar o `WSA` para rodar o nosso projeto em um `Virtual Device`.
- Acesse [esse link](https://github.com/awake558/adb-win/tree/master/SDK_Platform-Tools_for_Linux) e baixe a versão mais recente encontrada nesse repositório.
- Pegue o `ZIP` que você acabou de baixar e coloque na `HOME` do seu WSL
- Depois de jogar o seu `ZIP` lá, extraia ele pelo terminal usando o seguinte comando:
```bash
unzip <nome-do-arquivo>
```
- Se tudo der certo, você terá a pasta `platform-tools` na home do seu terminal

![mostrando a pasta na home do terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ecvf6gciwr6dthpdqbmw.png)
- Acesse essa pasta e rode o seguinte comando:
```bash
./adb connect <ip-do-wsl>:<porta-do-WSA>
```
### COMO DESCOBRIR O IP DO WSL
- No seu terminal do WSL, execute o mesmo comando:
```bash
netsh.exe interface ip show address
```
- Procure pelo `vEthernet (WSL)`

![mostrando o resultado do comando no terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32j40187atghmdy2hn12.png)

- No `Endereço IP`terá o IP do WSL que precisamos usar no comando acima.
### COMO DESCOBRIR A PORTA DO WSA
- Abra o WSA (clique na barra de pesquisa do `windows` e escreva `android` nele)

![WSA na barra de pesquisa do windows](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ho32xejy91me2tynpss.png)

- Acesse a aba de Advanced settings

![mostrando a aba advanced settings no wsa](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/afmclgf4m0o0qecoz1hl.png)

- Esses números depois do `:` são a porta do `WSA`.

![porta do WSA](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ztnyo4n46u1fsk6vtv2z.png)

- caso você não encontre a porta do `WSA` aqui, você terá que baixar a versão de `pre release` do WSA.
- O padrão é `58526`, mas no seu caso pode mudar, é bom verificar.
- Pronto, agora você sabe  o IP do seu WSL e a porta do WSA, agora você pode rodar  o comando.
- Depois de fazer isso, você pode rodar o projeto `Expo` de novo e aperte  o botão `a` para abrir o projeto com o `WSA`.

![mostrando o expo rodando corretamente com o virtual device](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jqq3pyy5uqlgy8lqtnd3.png)

Finalizamos, caso esse artigo tenha sido útil para você, de uma olhada na nossa comunidade, a [devhat](https://discord.gg/3gsMAEumEd). É aqui, que encontramos apoio, compartilhamos ideias e nos inspiramos mutuamente. A comunidade DevHatt não é apenas um conjunto de desenvolvedores, mas uma família unida pela paixão pela tecnologia e inovação.

Se você ainda não faz parte desta comunidade dinâmica, convidamos você a se juntar a nós no [Discord DevHatt](https://discord.gg/3gsMAEumEd).