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

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

 ... 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, los adb devices devuelven esto:

 List of devices attached 192.168.59.101:5555 device 

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

Gracias, Paul

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

enter image description here

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

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

Tuve que:

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

Escriba android en la línea de comando

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

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

enter image description here

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

Confirma que se ha agregado al ver tu ruta con echo $PATH

Luego, en genymotion haz lo que dice @Paul arriba y apunta a genymotion ADB para usar el mismo SDK

enter image description here

Sistema: Windows 10

Mi problema: configurar Genymotion para apuntar al SDK personalizado no tuvo ningún efecto. Aún recibí el:

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

Lo que descubrí fue que había una diferencia en las versiones de ADB que se usaban en todo el sistema. Aquí está el comando que solía encontrar:

 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 con el SDK personalizado tenía una 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 ese mismo lugar. Maté a adb con:

 adb kill-server 

lo que provocó un reinicio automático del servidor adb debido a que mi dispositivo Genymotion ya se estaba ejecutando. Presioné el botón “Reiniciar” dentro de Expo XDE e inmediatamente comenzó a funcionar. Aquí está el registro donde presiono el botón de reinicio a la 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 correctamente con el dispositivo simulado. Apuntar Genymotion a su ubicación de Android SDK y asegurarse de que Expo XDE tenga esa misma versión permitirá la comunicación correcta entre dispositivos. Trasladé la versión de Expo XDE a la ubicación del SDK, pero es posible que pueda optar por el otro (tome los archivos ADB sdk y colóquelos en la ubicación de los recursos de Expo XDE).

PD He estado leyendo todas las publicaciones de stackoverflow relacionadas con este problema. Solo para que sepan que mi administrador de tareas muestra tres instancias de ejecución de adb.exe. Si matas a alguno de ellos, simplemente vuelven.

Espero que esto ayude / saludos

Quizás sus versiones de adb no coincidan

Comprobar:

 adb version 

Entonces:

 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 platform-tools a / usr / bin /

Tuve un problema similar.

Primero, desinstalé la aplicación. Luego, apunté GenyMotion al SDK de Android proporcionado desde Android Studio Next, ejecuté “adb kill-server” en la terminal. Finalmente, volví a ejecutar “run-android run-native” y obtuve un éxito de comstackción.

Tuve la misma cosa mientras intentaba huir de la interfaz de usuario de expo. Hizo las mismas cosas, como se describe en las respuestas, pero la aplicación no se estaba ejecutando. Una vez que lo intenté, ejecute exp android desde la línea de comandos (en la carpeta del proyecto), la aplicación se ejecutó correctamente y las próximas veces se ejecutan desde Expo UI.

Los pasos que funcionó para mí son:

  • $ adb kill-server

  • $ adb start-server

  • $ cd android

  • $ ./gradlew clean

  • $ cd ..

  • $ react-native run-android

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

  1. Encuentra la copia de adb . adb . En macOS esto normalmente es /Applications/Genymotion.app/Contents/MacOS/tools/ .
  2. Agregue el directorio de herramientas Genymotion a su ruta: ejecute / agregue la ruta de export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATH a su ~/.bash_profile o ~/.bash_rc .
  3. Asegúrate de que puedes ejecutar adb desde tu terminal.

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

la versión de adb en su sistema es diferente de la versión de adb en la plataforma android sdk-tools. Debajo de la sugerencia está el trabajo para mí para el sistema operativo Linux

  1. comprobar la versión sys adb ejecutar el siguiente comando

versión adb

Android Debug Bridge versión 1.0.39

  1. comprobar la versión sdk adb

cd / root / Android / Sdk / plataforma-herramientas

./adb versión

Android Debug Bridge versión 1.0.32

  1. dupdo

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