React-Native, Android, Genymotion: el servidor ADB no ACK

168

Estoy trabajando con React-Native, Android y Genymotion en Mac. Cuando corro react-native run-android, recibo estas líneas al final de la operación de lanzamiento:

...
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.
...

Sin embargo, adb devicesdevuelve esto:

List of devices attached
192.168.59.101:5555 device

Hasta ahora no he encontrado una solución para ejecutar mi aplicación en el emulador. ¿Alguien ha encontrado el mismo problema?

Gracias paul

Pablo
fuente
Este error puede ocurrir independientemente de la ejecución de Genymotion.
IgorGanapolsky

Respuestas:

319

Después de más investigación, me di cuenta de que Genymotion usa por defecto su propio adb.

ingrese la descripción de la imagen aquí

Cambié a mi adb principal (el mismo que usa react-native) y resolvió el problema. Supongo que porque el adb de Genymotion se lanzó primero, recibí el Address already in usemensaje de error.

Pablo
fuente
44
Gracias por publicar esto. Casi tuve un ataque al corazón, anoche actualicé mis estudios de Android 2.1 a Preview 3 y genymotion ya no se conectará. Esto me ayudó a resolverlo.
Simon
77
Intenté esta solución, pero aún recibí el mismo error. ¿Hay soluciones alternativas?
calclavia
1
@ user2254679 ¿también revisaste este hilo? stackoverflow.com/questions/5703550/…
Paul
@Paul, ¿podría explicar qué camino está proporcionando? ¿Dónde se encuentra este adb que es utilizado por react-native? Estoy tratando de proporcionar la ruta de mi SDK de Android pero no funciona. en inglés sería lo mejor.
K Pal
@KPal, la ruta es específica para su propia configuración. En mi caso fue la ruta estándar de la instalación de Android en Mac en ese momento: /Users/$yourName/Library/Android/sdk. Si instaló Android, debe buscar su ruta dada la versión de Android / su plataforma.
Paul
45

Estoy usando genymotion, pero la solución de Paul por sí sola no solucionó el error (para Mac).

Tuve que:

Actualice el SDK de Android a la última versión (24.4.1) a través del administrador del SDK

Escribe androiden la línea de comando

En el administrador de SDK encuentre las últimas herramientas de SDK e instálelas.

Una vez instalada, la ruta del SDK debe actualizar la nueva ubicación del SDK como se muestra a continuación.

ingrese la descripción de la imagen aquí

Luego actualice $ ANDROID_HOME para usar el nuevo SDK

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

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

Confirme que se ha agregado al ver su ruta con echo $PATH

Luego, en genymotion, haga lo que @Paul dice arriba y señale genymotion ADB para usar el mismo SDK

ingrese la descripción de la imagen aquí

smj2393
fuente
Funciona para ubuntu 16.04. Por alguna razón, pensé que el $ANDROID_HOME/toolsdirectorio no sería necesario en el classpath. Necesita agregar para conectarse a adb.
Orar
10

Sistema: Windows 10

Mi problema: configurar Genymotion para que apunte al SDK personalizado no tuvo ningún efecto. Todavía recibí el:

No se pudo iniciar el proyecto en Android: no se pudo instalar el escucha inteligente: no se puede vincular a 127.0.0.1:5037: normalmente solo se permite un uso de cada dirección de socket (protocolo / dirección de red / puerto). (10048) no se pudo leer bien desde el servidor ADB * no se pudo iniciar el daemon * error: no se puede conectar al daemon

Lo que descubrí fue que había una diferencia en las versiones de ADB que se utilizan en todo el sistema. Aquí está el comando que usé para encontrarlos:

where /r C:\ adb.exe

Esto produjo los resultados:

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

Navegando a cada directorio y ejecutando:

adb.exe version

Me permitió ver que Expo estaba ejecutando la versión ADB:

Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android

Mientras que Genymotion usando el SDK personalizado tenía versión (c: \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):

Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android

Como prueba, tomé los archivos adb (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) de

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

y los colocó en una carpeta de respaldo. Luego moví los archivos adb ubicados en

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

en esa misma ubicación Maté a adb con:

adb kill-server

lo que provocó un reinicio del servidor adb automáticamente debido a que mi dispositivo Genymotion ya se estaba ejecutando. Apreté el botón "Reiniciar" dentro de Expo XDE e inmediatamente comenzó a funcionar. Aquí está el registro donde presioné el botón de reinicio a las 1:13:04 AM:

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).

Conclusión: Genymotion y Expo pueden necesitar usar la misma versión de adb para que Expo pueda comunicarse adecuadamente con el dispositivo simulado. Señalar Genymotion a la ubicación del SDK de Android y asegurarse de que Expo XDE tenga la misma versión permitirá la comunicación correcta entre dispositivos. Moví la versión de Expo XDE a la ubicación del SDK, pero es posible que pueda ir hacia otro lado (tome los archivos ADB de SDK y colóquelos en la ubicación de recursos de Expo XDE).

PD : He estado en todas las publicaciones de stackoverflow relacionadas con este problema. Para que sepan, mi administrador de tareas muestra tres instancias de adb.exe ejecutándose. Si matas a alguno de ellos, simplemente regresan.

Espero que esto ayude / salud

Kyle s
fuente
8

Tal vez sus versiones de adb no coinciden

Cheque:

adb version 

Luego:

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

Si estos dos son diferentes, tiene un error aquí, simplemente elimine adb de sys y copie el que está en herramientas de plataforma a / usr / bin /

Aldo RVV
fuente
4

Si desea mantener su sistema limpio, también puede usar Genymotion sin Android Studio :

  1. Encuentra la copia de Genymotion de adb. En macOS esto es normalmente /Applications/Genymotion.app/Contents/MacOS/tools/.
  2. Agregue el directorio de herramientas Genymotion a su ruta: ejecute / agregue la línea export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATHa su ~/.bash_profileo ~/.bash_rc.
  3. Asegúrese de que puede ejecutar adb desde su terminal.

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

Cseelus
fuente
4

la versión de adb en su sistema es diferente de la versión de adb en las herramientas de plataforma sdk de android. A continuación, la sugerencia me funciona para el sistema operativo Linux

  1. compruebe la versión de sys adb ejecute el siguiente comando

versión adb

Android Debug Bridge versión 1.0.39

  1. compruebe la versión de sdk adb

cd / root / Android / Sdk / platform-tools

./adb versión

Android Debug Bridge versión 1.0.32

  1. Copiar

rm / usr / bin / adb

[Nota: el comando anterior elimina el adb existente y luego copia el adb del directorio sdk / platform-tools]

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

Luego ejecuta el proyecto usando este comando

react-native run-android

Hoque MD Zahidul
fuente
esta es una buena solución para Linux, funciona con o sin Android Studio instalado
Maroof Shittu
3

Tuve lo mismo mientras trataba de huir de la expo UI. Hizo lo mismo, como se describe en las respuestas, pero la aplicación no se estaba ejecutando. Cuando una vez intentado ejecutar exp androiddesde la línea de comandos (en la carpeta del proyecto), la aplicación se ejecutó con éxito y la próxima vez se ejecuta con éxito desde la interfaz de usuario de Expo.

Aleksandr Suhhinin
fuente
2

Tuve un problema similar

Primero, desinstalé la aplicación. Luego, apunté GenyMotion al sdk de Android proporcionado por Android Studio. Luego, ejecuté "adb kill-server" en el terminal. Finalmente, volví a ejecutar "react-native run-android" y obtuve un éxito de compilación.

VocoJax
fuente
2

Los pasos que me funcionaron son:

  • $ adb kill-server

  • $ adb start-server

  • $ cd android

  • $ ./gradlew clean

  • $ cd ..

  • $ react-native run-android

Ragnar
fuente
2

Para Ubuntu

¡¡Esto funciona para mi!!

  1. compruebe la versión sys adb

versión adb

Android Debug Bridge versión 1.0.39

2 compruebe la versión de sdk adb

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

./adb versión

Android Debug Bridge versión 1.0.32

  1. Copiar

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

¡eso es todo! Funcionará ahora.

Rajat vindru
fuente
1

1.Utilice la ruta sdk personalizada en genymotion. (Suponga que esta no funciona significa, intente ejecutar la segunda)

2. Utilice manualmente este comando para ejecutar (SDK PATH / adb she ll start -n / Package name / MainActivity).

C: \ Users \ AppData \ Local \ Android \ Sdk / platform-tools / adb ella será start -n com.example / com.example.ManiActivity

E intente ejecutar la aplicación utilizando react-native run-android.

Priyanga
fuente
1

Estos son los pasos

$ adb kill-server

$ adb start-server

$ cd android

$ ./gradlew clean

$ cd ..

$ react-native run-android
Muhammed Nazil
fuente