콘텐츠로 이동

React Native Android 빌드에서 No connected devices! 오류 해결

DeviceException: No connected devices!

React Native로 Android 빌드를 진행하던 중 아래 에러로 설치에 실패했다.

Terminal window
Execution failed for task ':app:installDebug'.
> com.android.builder.testing.api.DeviceException: No connected devices!

처음에는 단순히 에뮬레이터가 실행되지 않은 문제처럼 보였지만, 실제 원인은 다른 쪽에 있었다.

JDK 경로를 찾을 수 없다

npx react-native run-android 실행 로그를 자세히 보면 에뮬레이터가 자동 실행되지 않았고, 그 결과 No connected devices! 에러로 이어지고 있었다.

Terminal window
$ npx react-native run-android
info Launching emulator...
error Failed to launch emulator. Reason: Could not start emulator within 30 seconds..
warn Please launch an emulator manually or connect a device. Otherwise app may fail to launch.
...
> Task :app:installDebug FAILED
Execution failed for task ':app:installDebug'.
> com.android.builder.testing.api.DeviceException: No connected devices!

처음에는 디바이스 연결 문제로 보였지만, 이 환경에서는 Android 빌드 환경에서 Java 실행 경로를 제대로 찾지 못해 에뮬레이터 실행이 정상적으로 이어지지 않는 상황이었다.

이때 확인한 원인은 JAVA_HOME 환경변수가 설정되어 있지 않았다는 점이었다.

  • JAVA_HOME은 시스템에서 JDK 위치를 찾을 때 사용하는 대표 환경변수다.
  • Android Studio, Gradle, CLI 빌드 도구는 JAVA_HOME을 기준으로 Java를 찾는 것이 일반적이다.
  • JAVA_HOME 값이 비어 있으면 Android 빌드나 에뮬레이터 실행 과정에서 연쇄적으로 실패할 수 있다.

에러 로그는 연결할 디바이스를 찾을 수 없다는 것이었지만, 이번 케이스에서는 그 전에 Java 실행 환경 설정이 맞지 않아 에뮬레이터 실행이 정상적으로 이어지지 않은 것으로 봤다.

JAVA_HOME 설정을 먼저 확인하자

해결 방법은 JAVA_HOME을 명시적으로 설정하는 것이었다.

Terminal window
$ cd ~
$ echo export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home >> .zshrc
$ source .zshrc
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

그 뒤 다시 Android 빌드를 실행했다.

Terminal window
$ npx react-native run-android

이후에는 APK 설치와 에뮬레이터 실행이 정상적으로 이어졌고, React Native 앱도 문제 없이 올라왔다.

즉 이번 케이스에서는 DeviceException: No connected devices! 자체가 핵심 원인이라기보다, Android 실행 환경의 Java 설정이 맞지 않아 에뮬레이터 기동이 정상적으로 이어지지 않은 결과에 가까웠다.


1) No connected devices!는 결과일 수 있다

섹션 제목: “1) No connected devices!는 결과일 수 있다”
  • 이 에러가 보인다고 해서 항상 실제 디바이스 연결만 문제인 것은 아니다.
  • 먼저 에뮬레이터 실행 로그, JDK 경로, Android SDK 설정을 같이 보는 편이 안전하다.

2) React Native Android 빌드에서 같이 확인할 것

섹션 제목: “2) React Native Android 빌드에서 같이 확인할 것”
  • JAVA_HOME이 올바르게 설정되어 있는지
  • java -version이 기대한 JDK를 가리키는지
  • Android Emulator가 직접 실행되는지
  • Android Studio에서 SDK와 Emulator가 정상 설치되어 있는지
  • JAVA_HOME은 시스템에서 JDK 설치 경로를 가리키는 대표 환경변수다.
  • Gradle, Android Studio, React Native Android 빌드처럼 Java를 사용하는 도구들은 이 값을 기준으로 Java 실행 환경을 찾는 경우가 많다.