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