System: Windows 10
Mój problem: ustawienie Genymotion tak, aby wskazywało na niestandardowy zestaw SDK, nie miało żadnego wpływu. Nadal otrzymałem:
Nie można uruchomić projektu na Androidzie: nie można zainstalować nasłuchiwania smartsocket: nie można powiązać z 127.0.0.1:5037: Normalnie dozwolone jest tylko jedno użycie każdego adresu gniazda (protokołu / adresu sieciowego / portu). (10048) nie można odczytać ok z serwera ADB * nie udało się uruchomić demona * błąd: nie można połączyć się z demonem
Odkryłem, że istnieje różnica w wersjach ADB używanych w całym systemie. Oto polecenie, którego użyłem, aby je znaleźć:
where /r C:\ adb.exe
Dało to wyniki:
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
Przechodzenie do każdego katalogu i uruchamianie:
adb.exe version
Pozwolił mi zobaczyć, że Expo działa w wersji ADB:
Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android
Podczas gdy Genymotion używający niestandardowego zestawu SDK miał wersję (c: \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):
Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android
W ramach testu wziąłem pliki adb (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) z
c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
i umieścił je w folderze kopii zapasowych. Następnie przeniosłem pliki adb znajdujące się pod adresem
c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
do tej samej lokalizacji. Zabiłem adb z:
adb kill-server
co spowodowało automatyczne ponowne uruchomienie serwera adb z powodu już uruchomionego mojego urządzenia Genymotion. Nacisnąłem przycisk „Uruchom ponownie” wewnątrz Expo XDE i natychmiast zaczęło działać. Oto dziennik, w którym nacisnąłem przycisk restartu o 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).
Wniosek: Genymotion i Expo może wymagać użycia tej samej wersji adb, aby Expo mogło poprawnie komunikować się z symulowanym urządzeniem. Wskazanie Genymotion na lokalizację Android SDK, a także zapewnienie, że Expo XDE ma tę samą wersję, umożliwi poprawną komunikację między urządzeniami. Przeniosłem wersję Expo XDE do lokalizacji SDK, ale być może będziesz mógł przejść w drugą stronę (weź pliki SDK ADB i umieść je w lokalizacji zasobów Expo XDE).
PS Przeszedłem przez wszystkie posty związane z tym problemem. Abyście wiedzieli, mój menedżer zadań pokazuje trzy uruchomione instancje adb.exe. Jeśli zabijesz któregoś z nich, po prostu wrócą.
Mam nadzieję, że to pomoże / na zdrowie