система: Windows 10
Моя проблема: установка Genymotion для указания на пользовательский SDK не оказала никакого влияния. Я все еще получил:
Не удалось запустить проект на Android: не удалось установить прослушиватель smartsocket: невозможно привязать к 127.0.0.1:5037: обычно разрешено только одно использование каждого адреса сокета (протокол / сетевой адрес / порт). (10048) не удалось прочитать нормально с сервера ADB * не удалось запустить демон * ошибка: не удается подключиться к демону
Я обнаружил, что есть различия в версиях ADB, используемых во всей системе. Вот команда, которую я использовал, чтобы найти их:
where /r C:\ adb.exe
Это дало результаты:
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
Переход к каждому каталогу и запуск:
adb.exe version
Позволил мне увидеть, что Экспо работает под управлением версии АБР:
Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android
В то время как Genymotion, использующий пользовательский SDK, имел версию (c: \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):
Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android
В качестве теста я взял файлы adb (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) из
c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
и поместил их в резервную папку. Затем я переместил файлы ADB, расположенные в
c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
в том же месте. Я убил АДБ с:
adb kill-server
что вызвало автоматический перезапуск сервера adb из-за того, что мое устройство Genymotion уже запущено. Я нажал кнопку «Перезагрузка» внутри Expo XDE, и она сразу же начала работать. Вот журнал, где я нажал кнопку перезагрузки в 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).
Вывод: Genymotion и Expo, возможно, потребуется использовать одну и ту же версию adb, чтобы Expo могла правильно взаимодействовать с имитируемым устройством. Указание Genymotion на местоположение вашего Android SDK, а также обеспечение того, что Expo XDE имеет ту же версию, обеспечит правильную связь между устройствами. Я переместил версию Expo XDE в папку SDK, но вы могли бы пойти другим путем (взять файлы SDK ADB и поместить их в расположение ресурса Expo XDE).
PS Я прошел через все сообщения от stackoverflow, связанные с этой проблемой. Просто чтобы вы, ребята, знали, что мой диспетчер задач показывает три запущенных экземпляра adb.exe. Если вы убьете любого из них, они просто вернутся.
Надеюсь, что это помогает / ура