Emerson Lima

Emerson Lima

Software Engineer

Debug de React Native no Windows sem perder a tarde

Metro, adb, logcat e os erros mais comuns quando o emulador no Windows não sobe ou o app não recarrega.

Instalar React Native no Windows é uma parte. A outra é descobrir por que o Metro trava, o emulador não aparece ou o run-android some no meio do build. Este é o checklist que eu uso antes de recriar o projeto.

Metro e cache

Se o bundle antigo fica grudado, limpe na ordem:

Terminal
npx react-native start --reset-cache

Ainda ruim? Apague node_modules e o cache do Metro:

Terminal
rmdir /s /q node_modules
npm start -- --reset-cache

No PowerShell, Remove-Item -Recurse -Force node_modules faz o mesmo.

adb não vê o emulador

O emulador pode estar ligado e o adb devices ainda assim vazio. Confira:

  1. ANDROID_HOME aponta para o SDK (em geral %LOCALAPPDATA%\Android\Sdk).
  2. platform-tools está no Path.
  3. Rode adb kill-server e depois adb start-server.

A lista deve mostrar um emulator-5554 device. Se aparecer unauthorized, aceite o diálogo de USB debugging no emulador.

Documentação útil: Android Debug Bridge.

Logcat sem ruído

O log do sistema é barulhento. Filtre pelo pacote do app:

Terminal
adb logcat *:S ReactNative:V ReactNativeJS:V

Erro nativo (crash no Java/Kotlin) não aparece no console do Metro. Aí o logcat é a fonte.

Porta 8081 ocupada

No Windows, outro Node costuma segurar a porta do Metro:

Terminal
netstat -ano | findstr :8081
taskkill /PID <pid> /F

Ou suba o Metro em outra porta e aponte o app para ela.

Gradle falhou no meio

Disco cheio, JDK errado e SDK incompleto são os três mais comuns. Confira o JDK que o Gradle está usando:

Terminal
cd android
gradlew -version

Se a versão do Java não bate com a que o React Native pede na doc da sua versão, o erro de compile parece aleatório.

Quando recriar o AVD

Se o emulador abre tela preta ou fecha sozinho, apague o AVD no Device Manager e crie de novo com imagem Google APIs, não a system image “Google Play” mais pesada, pelo menos no primeiro teste.

O objetivo não é memorizar comando. É ter uma ordem: cache → adb → logcat → porta → JDK. Nessa sequência dá para achar o problema na maioria das vezes.