React-Native, Android, Genymotion : ADB 서버가 ACK하지 않았습니다


168

Mac에서 React-Native, Android 및 Genymotion으로 작업하고 있습니다. 실행 react-native run-android하면 시작 작업이 끝나면이 줄이 나타납니다.

...
04:54:40 E/adb: error: could not install *smartsocket* listener: Address already in use
04:54:40 E/adb: ADB server didn't ACK
04:54:40 E/ddms: '/Users/paulbrie/Library/Android/sdk/platform-tools/adb,start-server' failed -- run manually if necessary
04:54:40 E/adb: * failed to start daemon *
04:54:40 E/adb: error: cannot connect to daemon
:app:installDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:installDebug'.
> com.android.builder.testing.api.DeviceException: Timeout getting device list.
...

그러나 다음을 adb devices반환합니다.

List of devices attached
192.168.59.101:5555 device

지금까지 에뮬레이터에서 앱을 실행하는 솔루션을 찾지 못했습니다. 누구든지 같은 문제가 발생 했습니까?

고마워, 폴


이 오류는 Genymotion 실행에 관계없이 발생할 수 있습니다.
IgorGanapolsky

답변:


319

더 많은 연구를 한 후에 Genymotion은 기본적으로 자체 adb를 사용한다는 것을 깨달았습니다.

여기에 이미지 설명을 입력하십시오

내 기본 adb (react-native에서 사용하는 것과 동일)로 전환하여 문제를 해결했습니다. Genymotion의 adb가 처음 시작되었으므로 Address already in use오류 메시지가 나타납니다.


4
이것을 게시 해 주셔서 감사합니다. 나는 거의 심장 마비를 일으켰다. 어제 밤에 안드로이드 스튜디오 2.1을 Preview 3으로 업데이트했는데 genymotion은 더 이상 연결되지 않습니다. 이것은 나를 해결하는 데 도움이되었습니다.
Simon

7
이 솔루션을 시도했지만 여전히 같은 오류가 발생했습니다. 대체 솔루션이 있습니까?
calclavia 2016 년

1
@ user2254679이 스레드도 확인 했습니까? stackoverflow.com/questions/5703550/…
Paul

@Paul 어떤 경로를 제공하고 있는지 자세히 설명해 주시겠습니까? react-native에서 사용하는 이 adb 는 어디에 있습니까? Android SDK의 경로를 제공하려고하는데 작동하지 않습니다. 영어로 가장 좋습니다.
K Pal

@KPal, 경로는 사용자의 설정에 따라 다릅니다. 필자의 경우 Mac의 Android 설치에서 표준 경로였습니다 /Users/$yourName/Library/Android/sdk. Android를 설치 한 경우 Android 버전 / 플랫폼이 지정된 경로를 검색해야합니다.
Paul

45

genymotion을 사용하고 있지만 Paul의 솔루션만으로는 오류를 수정하지 못했습니다 (Mac의 경우).

나는해야했다 :

SDK 관리자를 통해 Android SDK를 최신 버전 (24.4.1)으로 업데이트

android명령 행에 입력 하십시오

SDK 관리자에서 최신 SDK 도구를 찾아 설치하십시오.

SDK 경로가 설치되면 아래와 같이 새 SDK 위치를 업데이트해야합니다.

여기에 이미지 설명을 입력하십시오

그런 다음 $ ANDROID_HOME을 업데이트하여 새 SDK를 사용하십시오.

export ANDROID_HOME=/usr/local/Cellar/android-sdk/24.4.1_1

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

경로를 확인하여 추가되었는지 확인하십시오. echo $PATH

그런 다음 genymotion에서 @Paul이 위에서 말한 것을 수행하고 genymotion ADB가 동일한 SDK를 사용하도록 지시하십시오.

여기에 이미지 설명을 입력하십시오


우분투 16.04에서 작동합니다. 어떤 이유로 나는 $ANDROID_HOME/tools클래스 패스에서 디렉토리가 필요하지 않다고 생각했습니다 . adb에 연결하려면 추가해야합니다.
Orar

10

시스템 : Windows 10

내 문제 : 사용자 정의 SDK를 가리 키도록 Genymotion을 설정해도 아무런 영향이 없습니다. 나는 여전히 :

Android에서 프로젝트를 시작할 수 없습니다 : smartsocket 리스너를 설치할 수 없습니다 : 127.0.0.1:5037에 바인드 할 수 없음 : 각 소켓 주소 (프로토콜 / 네트워크 주소 / 포트)는 한 번만 사용할 수 있습니다. (10048) ADB 서버에서 확인을 읽지 못했습니다 * 데몬을 시작하지 못했습니다 * 오류 : 데몬에 연결할 수 없습니다

내가 발견 한 것은 시스템 전체에서 사용되는 ADB 버전에 차이가 있다는 것입니다. 내가 찾은 명령은 다음과 같습니다.

where /r C:\ adb.exe

결과는 다음과 같습니다.

C:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
C:\Program Files\Genymobile\Genymotion\tools\adb.exe
C:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
C:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb backup\adb.exe

각 디렉토리로 이동하여 다음을 실행하십시오.

adb.exe version

Expo가 ADB 버전을 실행하고 있음을 알 수있었습니다.

Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android

사용자 정의 SDK를 사용하는 Genymotion의 버전은 다음과 같습니다 (c : \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe) :

Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android

테스트로 나는 adb 파일 (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll)을

c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe

백업 폴더에 넣습니다. 그런 다음에있는 adb 파일을 옮겼습니다.

c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe

같은 위치에. 나는 다음과 같이 adb를 죽였다.

adb kill-server

내 Genymotion 장치가 이미 실행되어 adb 서버가 자동으로 다시 시작되었습니다. Expo XDE 내부의 "다시 시작"버튼을 누르면 즉시 작동하기 시작했습니다. 오전 1시 13 분 4 초에 다시 시작 버튼을 누른 로그는 다음과 같습니다.

12:45:53 AM
could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: Only one usage of each socket address (protocol/network address/port) is normally permitted. (10048)
could not read ok from ADB Server
* failed to start daemon *
error: cannot connect to daemon
1:13:04 AM
Restarting project and clearing packager cache (Hold shift while clicking restart to avoid clearing cache).
1:13:11 AM
Starting React Native packager...
1:13:17 AM
Scanning 543 folders for symlinks in C:\Users\kyle\git\betalog\node_modules (49ms)
1:13:17 AM
1:13:19 AM
Couldn't adb reverse: closed
1:13:20 AM
Project opened! You can now use the "Share" or "Device" buttons to view your project.
1:13:26 AM
Couldn't adb reverse: closed
1:13:26 AM
Downloading latest version of Expo
1:13:28 AM
Installing Expo on device
1:13:33 AM
Opening on Android device
1:13:56 AM
Building JavaScript bundle: finished in 59643ms.
1:14:01 AM
Dependency graph loaded.
1:14:03 AM
Your JavaScript transform cache is empty, rebuilding (this may take a minute).

결론 : Genymotion과 Expo는 동일한 버전의 adb를 사용해야 Expo가 시뮬레이션 된 장치와 올바르게 통신 할 수 있습니다. Genymotion이 Android SDK 위치를 가리키고 Expo XDE에 동일한 버전이 있는지 확인하면 장치간에 올바른 통신이 가능합니다. Expo XDE 버전을 SDK 위치로 옮겼지만 다른 방법으로 이동할 수 있습니다 (sdk ADB 파일을 가져 와서 Expo XDE 리소스 위치에 배치).

추신 : 나는이 문제와 관련된 stackoverflow 게시물을 모두 보았습니다. 내 작업 관리자가 3 개의 adb.exe 인스턴스를 실행 중임을 보여줍니다. 당신이 그들 중 하나를 죽이면 그들은 다시 돌아옵니다.

이것이 / 건배에 도움이되기를 바랍니다.


8

어쩌면 귀하의 adb 버전이 일치하지 않을 수 있습니다

검사:

adb version 

그때:

cd /Path/to/Android/Sdk/platform-tools && ./adb version

이 두 가지가 다른 경우 여기에 오류가있는 경우 sys에서 adb를 제거하고 platform-tools에있는 adb를 / usr / bin /에 복사하십시오.


4

시스템을 깨끗하게 유지하려면 Android Studio없이 Genymotion 을 사용할 수도 있습니다 .

  1. Genymotion의 사본을 찾으십시오 adb. macOS에서 이것은 일반적으로 /Applications/Genymotion.app/Contents/MacOS/tools/입니다.
  2. / 실행 줄을 추가 - 당신의 경로에 Genymotion 도구 디렉토리를 추가 export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATH하여에 ~/.bash_profile또는 ~/.bash_rc.
  3. 터미널에서 adb를 실행할 수 있는지 확인하십시오.

( https://docs.expo.io/versions/latest/workflow/genymotion에서 )


4

시스템의 adb 버전이 android sdk platform-tools의 adb 버전과 다릅니다. 아래 제안은 Linux 운영 체제에서 작동합니다.

  1. sys adb 버전 확인 아래 명령을 실행하십시오.

adb 버전

Android Debug Bridge 버전 1.0.39

  1. SDK ADB 버전 확인

cd / root / Android / Sdk / 플랫폼 도구

./adb 버전

Android Debug Bridge 버전 1.0.32

rm / usr / bin / adb

[참고 : 위의 명령은 기존 adb를 제거한 다음 sdk / platform-tools 디렉토리에서 adb를 복사합니다]

sudo cp / root / Android / Sdk / platform-tools / adb / usr / bin / adb

그런 다음이 명령을 사용하여 프로젝트를 실행하십시오.

반응 네이티브 런 안드로이드


이것은 리눅스에 대한 좋은 솔루션이 설치 또는 안드로이드 스튜디오없이 작동
maroof 시튜

3

엑스포 UI에서 실행하려고 할 때도 마찬가지였습니다. 답변에 설명 된 것과 동일한 작업을 수행했지만 앱이 실행되지 않았습니다. exp android프로젝트 폴더의 명령 줄에서 실행 을 시도하면 응용 프로그램이 성공적으로 실행되고 다음에 Expo UI에서 성공적으로 실행되었습니다.


2

나는 비슷한 문제가 있었다.

먼저 앱을 제거했습니다. 그런 다음 GenyMotion이 Android Studio에서 제공하는 Android SDK를 가리 키도록 한 다음 "adb kill-server"를 터미널로 실행했습니다. 마지막으로, 나는 "반응 형 런-앤드 로이드"를 다시 실행하여 빌드 성공을 거두었습니다.


2

나를 위해 일한 단계는 다음과 같습니다.

  • $ adb kill-server

  • $ adb 시작 서버

  • $ cd 안드로이드

  • $ ./gradlew clean

  • $ cd ..

  • $ 반응 네이티브 런 안드로이드


2

우분투

그것은 나를 위해 작동합니다!

  1. sys adb 버전 확인

adb 버전

Android Debug Bridge 버전 1.0.39

2 SDK ADB 버전 확인

cd / home / user_name / Android / sdk / platform-tools

./adb 버전

Android Debug Bridge 버전 1.0.32

sudo cp / home / user_name / Android / sdk / platform-tools / adb / usr / local / bin

그게 다야! 지금 작동합니다.


1

1. genymotion에서 사용자 정의 SDK 경로를 사용하십시오. (이것이 작동하지 않는다고 가정하면 두 번째 것을 실행하십시오)

2.이 명령을 수동으로 사용하여 실행합니다 (SDK PATH / adb 시작 -n / 패키지 이름 / MainActivity).

C : \ Users \ AppData \ Local \ Android \ Sdk / platform-tools / adb 시작 -n com.example / com.example.ManiActivity

그리고 react-native run-android를 사용하여 응용 프로그램을 실행하십시오.


1

이것들은 단계입니다

$ adb kill-server

$ adb start-server

$ cd android

$ ./gradlew clean

$ cd ..

$ react-native run-android
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.