Система: 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
Дозволено мені побачити, що на Expo працює версія ADB:
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 за допомогою:
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 на місце розташування SDK для Android, а також забезпечення того, що Expo XDE має таку саму версію, що дозволить правильно спілкуватись між пристроями. Я перемістив версію Expo XDE до місця SDK, але ви, можливо, зможете піти іншим шляхом (візьміть файли ADB sdk та розмістіть їх у місці ресурсу Expo XDE).
PS Я постійно переглядав публікації stackoverflow, пов'язані з цією проблемою. Так що ви, хлопці, знаєте, що мій менеджер із завдань показує три екземпляри запуску adb.exe. Якщо ви вб'єте когось із них, вони просто повернуться.
Сподіваюсь, це допомагає / ура