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


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 (той самий, що використовується у реакції-нативному), і це вирішило проблему. Я думаю, що тому, що вперше запущено adb Genymotion, я отримав Address already in useповідомлення про помилку.


4
Дякуємо, що опублікували це. У мене майже був серцевий напад, я вчора оновив андроїд-студії 2.1 до Preview 3, і генімоція більше не підключатиметься. Це допомогло мені вирішити це.
Симон

7
Я спробував це рішення, але все ж отримав ту саму помилку. Чи є альтернативні рішення?
calclavia

1
@ user2254679 Ви також перевірили цю тему? stackoverflow.com/questions/5703550/…
Пол

@Paul, чи можете ви детальніше розібратися, який шлях ви надаєте? де розміщена ця adb, яка використовується реагентом? Я намагаюся забезпечити шлях мого Android SDK, але він не працює. англійською мовою було б найкраще.
K Pal

@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

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


Він працює для 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

Дозволено мені побачити, що на 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. Якщо ви вб'єте когось із них, вони просто повернуться.

Сподіваюсь, це допомагає / ура


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 - виконайте / додайте рядок export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATHу свій ~/.bash_profileабо ~/.bash_rc.
  3. Переконайтеся, що ви можете запускати adb зі свого терміналу.

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


4

версія 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 версія

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


це гарне рішення для Linux, він працює з або без встановленої андроїд-студії
maroof shittu

3

У мене було те саме, що я намагався запустити інтерфейс expo. Зробив те саме, що описано у відповідях, але додаток не працює. Коли одного разу спробували запустити exp androidз командного рядка (у папці проекту), програма успішно запустилася і наступного разу запускається з інтерфейсу Expo.


2

У мене було подібне питання.

По-перше, я видалив додаток. Потім я вказав GenyMotion на Android sdk, наданий від Android Studio Next, я запустив "adb kill-server" в термінал. Нарешті, я повторно запустив "реагувати на рідний біг-андроїд" і отримав успіх у побудові.


2

Для мене такі кроки:

  • $ adb kill-сервер

  • $ adb start-сервер

  • $ cd android

  • $ ./gradlew чистий

  • $ cd ..

  • $ react-native run-android


2

Для Ubuntu

Це працює для мене !!

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

версія adb

Android Debug Bridge версія 1.0.39

2 перевірте версію sdk adb

інструменти cd / home / user_name / Android / sdk / platform-tools

./adb версія

Android Debug Bridge версія 1.0.32

  1. копія

sudo cp / home / ім'я користувача / Android / sdk / platform-tools / adb / usr / local / bin

це все! Це працюватиме зараз.


1

1.використовуйте призначений для sdk шлях у genymotion. (Припустимо, цей один не буде працювати, спробуйте виконати другий)

2.Використовуйте цю команду вручну для виконання (SDK PATH / adb she ll am start -n / Назва пакета / MainActivity).

C: \ Користувачі \ AppData \ Місцеві \ Android \ Sdk / platform-tools / adb вона запускається -n com.example / com.example.ManiActivity

І спробуйте запустити додаток за допомогою реактивного запуску-android.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.