React-Native, Android, Genymotion: сервер ADB не получил подтверждение

168

Я работаю с React-Native, Android и Genymotion на Mac. Когда я запускаю, react-native run-androidя получаю эти строки в конце операции запуска:

...
04:54:40 E/adb: error: could not install *smartsocket* listener: Address already in use
04:54:40 E/adb: ADB server didn't ACK
04:54:40 E/ddms: '/Users/paulbrie/Library/Android/sdk/platform-tools/adb,start-server' failed -- run manually if necessary
04:54:40 E/adb: * failed to start daemon *
04:54:40 E/adb: error: cannot connect to daemon
:app:installDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:installDebug'.
> com.android.builder.testing.api.DeviceException: Timeout getting device list.
...

Однако adb devicesвозвращает это:

List of devices attached
192.168.59.101:5555 device

До сих пор я не нашел решения для запуска моего приложения на эмуляторе. Кто-нибудь сталкивался с такой же проблемой?

Спасибо пол

Павел
источник
Эта ошибка может произойти независимо от того, работает Genymotion.
Игорь Ганапольский

Ответы:

319

После дополнительных исследований я понял, что Genymotion по умолчанию использует свой собственный adb.

введите описание изображения здесь

Я переключился на мой основной adb (тот же, который используется response-native), и это решило проблему. Я предполагаю, что поскольку adb Genymotion был запущен первым, я получил Address already in useсообщение об ошибке.

Павел
источник
4
Спасибо за публикацию. У меня чуть не случился сердечный приступ, я обновил свои Android-студии 2.1 до Preview 3 прошлой ночью, и genymotion больше не будет подключаться. Это помогло мне решить это.
Симон
7
Я попробовал это решение, но я все еще получил ту же ошибку. Есть ли альтернативные решения?
Calclavia
1
@ user2254679 ты тоже проверил эту тему? stackoverflow.com/questions/5703550/…
Пол
@ Пол, не могли бы вы рассказать, какой путь вы предоставляете? где находится этот adb, который используется response-native? Я пытаюсь указать путь к моему Android SDK, но он не работает. на английском будет лучше.
К Пал
@KPal, путь зависит от вашей собственной настройки. В моем случае это был стандартный путь от Android установки в Mac в то время: /Users/$yourName/Library/Android/sdk. Если вы установили Android, вы должны искать свой путь, учитывая версию Android / вашу платформу.
Пол
45

Я использую genymotion, но одно только решение Пола не устранило ошибку (для Mac).

Мне пришлось:

Обновите Android SDK до последней версии (24.4.1) через менеджер SDK

Введите androidв командной строке

В менеджере SDK найдите последние инструменты SDK и установите.

После установки путь SDK должен обновить новое местоположение SDK, как показано ниже.

введите описание изображения здесь

Затем обновите $ ANDROID_HOME, чтобы использовать новый SDK

export ANDROID_HOME=/usr/local/Cellar/android-sdk/24.4.1_1

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

Подтвердите, что он был добавлен, просмотрев ваш путь с echo $PATH

Затем в genymotion сделайте то, что говорит @Paul выше, и укажите genymotion ADB, чтобы использовать тот же SDK

введите описание изображения здесь

smj2393
источник
Это работает для Ubuntu 16.04. По некоторым причинам я думал, что $ANDROID_HOME/toolsкаталог не будет необходим на пути к классам. Вы должны добавить, чтобы подключиться к ADB.
Орар
10

система: 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. Если вы убьете любого из них, они просто вернутся.

Надеюсь, что это помогает / ура

Кайл с
источник
8

Возможно, ваши версии ADB не соответствуют

Проверьте:

adb version 

Затем:

cd /Path/to/Android/Sdk/platform-tools && ./adb version

Если эти два значения различаются, у вас есть ошибка, просто удалите adb из sys и скопируйте тот, который находится в инструментах платформы, в / usr / bin /

Альдо РВВ
источник
4

Если вы хотите сохранить свою систему в чистоте, вы также можете использовать Genymotion без Android Studio :

  1. Найти копию Genymotion adb. На macOS это нормально /Applications/Genymotion.app/Contents/MacOS/tools/.
  2. Добавьте каталог Genymotion tools в ваш путь - выполните / добавьте строку export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATHв ваш ~/.bash_profileили ~/.bash_rc.
  3. Убедитесь, что вы можете запустить ADB из вашего терминала.

(Из https://docs.expo.io/versions/latest/workflow/genymotion )

cseelus
источник
4

Версия ADB в вашей системе отличается от версии ADB на Android-инструменты платформы SDK. Ниже предложение работает для меня для операционной системы Linux

  1. проверьте версию sys adb, запустите приведенную ниже команду

версия adb

Android Debug Bridge версия 1.0.39

  1. проверить SDK версию ADB

CD / root / Android / Sdk / платформа-инструменты

./adb версия

Android Debug Bridge версия 1.0.32

  1. копия

rm / usr / bin / adb

[Примечание: приведенная выше команда удаляет существующий adb, затем копирует adb из каталога sdk / platform-tools]

sudo cp / root / Android / sdk / платформа-инструменты / adb / usr / bin / adb

Затем запустите проект с помощью этой команды

реагировать-родной запуск андроид

Hoque MD Захидул
источник
Это хорошее решение для Linux, оно работает с или без установленной андроид-студии
maroof shittu
3

У меня было то же самое, когда я пытался бежать из выставочного интерфейса. Делал то же самое, что описано в ответах, но приложение не работало. При попытке запуска exp androidиз командной строки (в папке проекта) приложение было успешно запущено, и в следующий раз запуск из Экспо-интерфейса прошел успешно.

Александр Сухинин
источник
2

У меня была похожая проблема.

Сначала я удалил приложение. Затем я указал GenyMotion на Android SDK, предоставленный Android Studio. Затем я запустил «adb kill-server» в терминал. Наконец, я перезапустил «response-native run-android» и добился успеха в сборке.

VocoJax
источник
2

Шаги работали для меня:

  • $ adb kill-server

  • $ adb start-server

  • $ cd android

  • $ ./gradlew clean

  • $ cd ..

  • $ response-native run-android

Рагнар
источник
2

Для Ubuntu

Меня устраивает!!

  1. проверьте версию sys adb

версия adb

Android Debug Bridge версия 1.0.39

2 проверьте версию SDK ADB

cd / home / имя_пользователя / Android / sdk / platform-tools

./adb версия

Android Debug Bridge версия 1.0.32

  1. копия

sudo cp / home / user_name / Android / sdk / platform-tools / adb / usr / local / bin

вот и все! Это будет работать сейчас.

Раджат Виндру
источник
1

1. Использовать пользовательский путь SDK в Genymotion. (Предположим, что это не сработает, попробуйте выполнить второй)

2. Вручную используйте эту команду для выполнения (SDK PATH / adb, она запустит -n / Имя пакета / MainActivity).

C: \ Users \ AppData \ Local \ Android \ Sdk / platform-tools / adb она запустится -n com.example / com.example.ManiActivity

И попробуйте запустить приложение с помощью response-native run-android.

Priyanga
источник
1

Это шаги

$ adb kill-server

$ adb start-server

$ cd android

$ ./gradlew clean

$ cd ..

$ react-native run-android
Мухаммед Назил
источник