Sistema: Windows 10
Il mio problema: impostare Genymotion in modo che punti all'SDK personalizzato non ha avuto alcun effetto. Ho ancora ricevuto il:
Impossibile avviare il progetto su Android: impossibile installare il listener smartsocket: impossibile associare a 127.0.0.1:5037: normalmente è consentito un solo utilizzo di ciascun indirizzo socket (protocollo / indirizzo di rete / porta). (10048) impossibile leggere ok dal server ADB * impossibile avviare il demone * errore: impossibile connettersi al demone
Quello che ho scoperto è che c'era una differenza nelle versioni ADB utilizzate in tutto il sistema. Ecco il comando che ho usato per trovarli:
where /r C:\ adb.exe
Ciò ha prodotto i risultati:
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
Navigazione verso ciascuna directory ed esecuzione:
adb.exe version
Mi ha permesso di vedere che Expo stava eseguendo la versione ADB:
Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android
Mentre Genymotion usando l'SDK personalizzato aveva la versione (c: \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):
Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android
Come test ho preso i file adb (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) da
c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
e li ha inseriti in una cartella di backup. Ho quindi spostato i file adb che si trovano in
c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
in quella stessa posizione. Ho ucciso adb con:
adb kill-server
che ha causato automaticamente il riavvio del server adb a causa del mio dispositivo Genymotion già in esecuzione. Ho premuto il pulsante "Riavvia" all'interno di Expo XDE e ha subito iniziato a funzionare. Ecco il registro in cui ho premuto il pulsante di riavvio alle 1:13:04:
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).
Conclusione: Genymotion ed Expo potrebbero dover utilizzare la stessa versione di adb per consentire a Expo di comunicare correttamente con il dispositivo simulato. Indicare Genymotion sulla posizione dell'SDK Android e assicurarsi che Expo XDE abbia la stessa versione consentirà una comunicazione corretta tra i dispositivi. Ho spostato la versione di Expo XDE nella posizione dell'SDK, ma potresti essere in grado di andare dall'altra parte (prendere i file sdk ADB e posizionarli nella posizione delle risorse di Expo XDE).
PS Ho passato tutti i post di StackOverflow relativi a questo problema. Solo così sapete che il mio task manager mostra tre istanze di adb.exe in esecuzione. Se uccidi qualcuno di loro, tornano indietro.
Spero che questo aiuti / applausi