React-Native, Android, Genymotion: сервер ADB не ACK - программирование

React-Native, Android, Genymotion: сервер ADB не ACK

Я работаю с 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

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

Спасибо, Пол

4b9b3361

Ответ 1

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

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

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

Ответ 2

Я использую genymotion, но одно решение Paul не исправило ошибку (для 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

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

Ответ 3

Система: Windows 10

Моя проблема: Настройка Genymotion для указания на пользовательский SDK не повлияла. Я все еще получил:

Не удалось запустить проект на Android: не удалось установить smartsocket слушатель: не может привязываться к 127.0.0.1:5037: только одно использование каждого сокета адрес (протокол/сетевой адрес/порт), как правило, разрешен. (10048) не удалось прочитать ok с сервера 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 уже запущено. Я нажал кнопку "Перезапустить" внутри Экспо XDE и сразу же начал работать. Вот журнал, в который я нажал кнопку перезапуска в 1:13:04 AM:

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, но вы можете пойти другим путем (взять файлы ADB sdk и поместить их в место размещения Expo XDE).

P.S. Я прошел через сообщения stackoverflow, связанные с этой проблемой. Просто вы, ребята, знаете, что мой диспетчер задач показывает три примера работы adb.exe. Если вы убьете любого из них, они просто вернутся.

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

Ответ 4

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

Проверка:

adb version 

Тогда:

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

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

Ответ 5

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

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

версия adb

Android Debug Bridge версия 1.0.39

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

cd/root/Android/Sdk/platform-tools

./adb version

Android Debug Bridge версия 1.0.32

  1. скопировать

rm/usr/bin/adb

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

sudo cp/root/Android/Sdk/platform-tools/adb/usr/bin/adb

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

react-native run-android

Ответ 6

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

Ответ 7

У меня была аналогичная проблема.

Во-первых, я удалил приложение. Затем я указал GenyMotion на android sdk из Android Studio Затем я запустил "adb kill-server" в терминал. Наконец, я снова запустил "run-and-and-and-run-action" и получил успех сборки.

Ответ 8

Шаги помогли мне:

  • $ adb kill-server

  • $ adb start-server

  • $ cd android

  • $./gradlew clean

  • $ cd..

  • $act-native run-android

Ответ 9

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

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

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

Ответ 10

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

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

C:\Users\AppData\Local\Android\Sdk/platform-tools/adb she я начну -n com.example/com.example.ManiActivity

И попробуйте запустить приложение, используя реагирующий -n ative run-android.