React-Native, Android, Genymotion : ADB 서버가 ACK하지 않았습니다 server didn’t ACK 04:54:40 E/ddms:

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은 기본적으로 자체 adb를 사용한다는 것을 깨달았습니다.

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


답변

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를 사용하도록 지시하십시오.


답변

시스템 : 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 인스턴스를 실행 중임을 보여줍니다. 당신이 그들 중 하나를 죽이면 그들은 다시 돌아옵니다.

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


답변

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

검사:

adb version 

그때:

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

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


답변

시스템을 깨끗하게 유지하려면 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에서 )


답변

시스템의 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

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

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


답변

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