React-Native, Android, Genymotion: Máy chủ ADB không ACK


168

Tôi đang làm việc với React-Native, Android và Genymotion trên Mac. Khi tôi chạy, react-native run-androidtôi nhận được các dòng này vào cuối hoạt động khởi chạy:

...
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.
...

Tuy nhiên, adb devicestrả về điều này:

List of devices attached
192.168.59.101:5555 device

Cho đến nay tôi không tìm thấy giải pháp nào để chạy ứng dụng của mình trên trình giả lập. Có ai gặp phải vấn đề tương tự?

Cảm ơn, Paul


Lỗi này có thể xảy ra bất kể Genymotion đang chạy.
IgorGanapolsky

Câu trả lời:


319

Sau nhiều nghiên cứu tôi đã nhận ra rằng Genymotion sử dụng theo mặc định adb của chính nó.

nhập mô tả hình ảnh ở đây

Tôi đã chuyển sang adb chính của mình (tương tự được sử dụng bởi Reac -igen) và nó đã giải quyết được vấn đề. Tôi đoán rằng vì adb của Genymotion đã được tung ra trước tiên nên tôi nhận được thông Address already in usebáo lỗi.


4
Cảm ơn vì đã đăng tải điều này. Tôi suýt lên cơn đau tim, tôi đã cập nhật android studio 2.1 của mình lên Preview 3 tối qua và genymotion sẽ không kết nối nữa. Điều này đã giúp tôi giải quyết nó.
Simon

7
Tôi đã thử giải pháp này, nhưng tôi vẫn gặp lỗi tương tự. Có giải pháp thay thế?
calclavia

1
@ user2254679 bạn đã kiểm tra chủ đề này chưa? stackoverflow.com/questions/5703550/ móc
Paul

@Paul bạn có thể vui lòng giải thích về con đường bạn đang cung cấp không? adb này nằm ở đâu được sử dụng bởi Reac -igen? Tôi đang cố gắng cung cấp đường dẫn của SDK Android của mình nhưng nó không hoạt động. bằng tiếng Anh sẽ là tốt nhất.
K Pal

@KPal, đường dẫn dành riêng cho thiết lập của riêng bạn. Trong trường hợp của tôi, đó là đường dẫn chuẩn từ cài đặt Android trong Mac tại thời điểm đó : /Users/$yourName/Library/Android/sdk. Nếu bạn đã cài đặt Android, bạn nên tìm kiếm đường dẫn của phiên bản Android / nền tảng của bạn.
Paul

45

Tôi đang sử dụng genymotion, nhưng một mình giải pháp của Paul đã không khắc phục được lỗi (đối với Mac).

Tôi phải:

Cập nhật SDK Android lên phiên bản mới nhất (24.4.1) thông qua trình quản lý SDK

Nhập androiddòng lệnh

Trong trình quản lý SDK, hãy tìm các công cụ SDK mới nhất và cài đặt.

Sau khi cài đặt, đường dẫn SDK sẽ cập nhật vị trí SDK mới như bên dưới.

nhập mô tả hình ảnh ở đây

Sau đó cập nhật $ ANDROID_HOME để sử dụng SDK mới

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

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

Xác nhận nó đã được thêm bằng cách xem đường dẫn của bạn với echo $PATH

Sau đó, trong genymotion làm những gì @Paul nói ở trên và chỉ ra genymotion ADB để sử dụng cùng một sdk

nhập mô tả hình ảnh ở đây


Nó hoạt động cho Ubuntu 16.04. Vì một số lý do, tôi nghĩ rằng $ANDROID_HOME/toolsthư mục sẽ không cần thiết trên đường dẫn lớp. Bạn cần thêm để kết nối với adb.
Orar

10

Hệ thống: Windows 10

Vấn đề của tôi: Đặt Genymotion để trỏ đến SDK tùy chỉnh không có bất kỳ ảnh hưởng nào. Tôi vẫn nhận được:

Không thể bắt đầu dự án trên Android: không thể cài đặt trình nghe smartsocket: không thể liên kết với 127.0.0.1:5037: Chỉ được phép sử dụng một địa chỉ của mỗi địa chỉ ổ cắm (giao thức / địa chỉ mạng / cổng). (10048) không thể đọc ok từ Máy chủ ADB * không thể khởi động trình nền * lỗi: không thể kết nối với trình nền

Những gì tôi phát hiện ra là có sự khác biệt trong các phiên bản ADB đang được sử dụng trên toàn hệ thống. Đây là lệnh tôi đã sử dụng để tìm chúng:

where /r C:\ adb.exe

Điều này tạo ra kết quả:

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

Điều hướng đến từng thư mục và chạy:

adb.exe version

Cho phép tôi thấy rằng Expo đang chạy phiên bản ADB:

Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android

Trong khi Genymotion sử dụng SDK tùy chỉnh có phiên bản (c: \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):

Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android

Để kiểm tra, tôi đã lấy các tệp adb (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) từ

c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe

và đặt chúng vào một thư mục sao lưu. Sau đó tôi đã di chuyển các tập tin adb nằm ở

c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe

vào cùng một vị trí Tôi đã giết adb với:

adb kill-server

đã tự động khởi động lại máy chủ adb do thiết bị Genymotion của tôi đã chạy. Tôi nhấn nút "Khởi động lại" bên trong Expo XDE và nó ngay lập tức bắt đầu hoạt động. Đây là nhật ký nơi tôi nhấn nút khởi động lại lúc 1:13:04 sáng:

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).

Kết luận: Genymotion và Expo có thể cần sử dụng cùng một phiên bản adb để Expo có thể giao tiếp đúng với thiết bị mô phỏng. Hướng Genymotion đến vị trí SDK Android của bạn cũng như đảm bảo Expo XDE có cùng phiên bản sẽ cho phép giao tiếp chính xác giữa các thiết bị. Tôi đã chuyển phiên bản Expo XDE sang vị trí SDK, nhưng bạn có thể đi theo một cách khác (lấy các tệp ADB sdk và đặt chúng vào vị trí tài nguyên của Expo XDE).

PS Tôi đã được tất cả thông qua các bài viết stackoverflow liên quan đến vấn đề này. Để các bạn biết trình quản lý tác vụ của tôi hiển thị ba phiên bản adb.exe đang chạy. Nếu bạn giết bất kỳ ai trong số họ, họ sẽ quay lại.

Hy vọng điều này sẽ giúp / chúc mừng


8

Có thể các phiên bản adb của bạn không khớp

Kiểm tra:

adb version 

Sau đó:

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

Nếu hai cái này khác nhau, bạn có một lỗi ở đây, chỉ cần xóa adb khỏi sys và sao chép cái có trong công cụ nền tảng sang / usr / bin /


4

Nếu muốn giữ cho hệ thống của bạn sạch sẽ, bạn cũng có thể sử dụng Genymotion mà không cần Android Studio :

  1. Tìm bản sao của Genymotion adb. Trên macOS, điều này là bình thường /Applications/Genymotion.app/Contents/MacOS/tools/.
  2. Thêm thư mục công cụ Genymotion vào đường dẫn của bạn - thực thi / thêm dòng export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATHvào ~/.bash_profilehoặc ~/.bash_rc.
  3. Hãy chắc chắn rằng bạn có thể chạy adb từ thiết bị đầu cuối của bạn.

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


4

phiên bản adb trên hệ thống của bạn khác với phiên bản adb trên công cụ nền tảng sdk android. Dưới đây là gợi ý cho tôi về hệ điều hành Linux

  1. kiểm tra phiên bản sys adb chạy lệnh dưới đây

phiên bản adb

Cầu gỡ lỗi Android phiên bản 1.0.39

  1. kiểm tra phiên bản sdk adb

cd / root / Android / Sdk / platform-tools

phiên bản ./adb

Cầu gỡ lỗi Android phiên bản 1.0.32

  1. bản sao

rm / usr / bin / adb

[Lưu ý: lệnh trên loại bỏ adb hiện có sau đó sao chép adb từ thư mục sdk / platform-tools]

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

Sau đó chạy dự án bằng lệnh này

run-android run-android


Đây là một giải pháp tốt cho Linux, nó hoạt động có hoặc không cài đặt studio android
marfe shittu

3

Tôi đã có điều tương tự trong khi tôi cố chạy từ UI expo. Đã làm những điều tương tự, như được mô tả trong câu trả lời, nhưng ứng dụng không chạy. Khi đã thử chạy exp androidtừ dòng lệnh (trong thư mục dự án), ứng dụng đã chạy thành công và lần tiếp theo chạy từ Expo UI đã thành công.


2

Tôi đã có một vấn đề tương tự.

Đầu tiên, tôi gỡ cài đặt ứng dụng. Sau đó, tôi đã chỉ GenyMotion cho sdk Android được cung cấp từ Android Studio Tiếp theo, tôi chạy "adb kill-server" vào thiết bị đầu cuối. Cuối cùng, tôi chạy lại "Reac -igen run-android" và gặt hái thành công.


2

Các bước làm việc cho tôi là:

  • $ adb kill-server

  • $ adb máy chủ khởi động

  • $ cd android

  • $ ./gradlew sạch

  • $ cd ..

  • $ Reac -igen run-android


2

Dành cho Ubuntu

Nó làm việc cho tôi !!

  1. kiểm tra phiên bản sys adb

phiên bản adb

Cầu gỡ lỗi Android phiên bản 1.0.39

2 kiểm tra phiên bản sdk adb

cd / home / user_name / Android / sdk / platform-tools

phiên bản ./adb

Cầu gỡ lỗi Android phiên bản 1.0.32

  1. bản sao

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

đó là tất cả! Nó sẽ hoạt động ngay bây giờ.


1

1. sử dụng đường dẫn sdk tùy chỉnh trong genymotion. (Giả sử cái này không có nghĩa là hoạt động, Hãy thử thực hiện cái thứ hai)

2. Tự sử dụng lệnh này để thực thi (SDK PATH / adb cô ấy sẽ bắt đầu -n / Tên gói / MainActivity).

C: \ Users \ AppData \ Local \ Android \ Sdk / platform-tools / adb cô ấy sẽ bắt đầu -n com.example / com.example.ManiActivity

Và cố gắng chạy ứng dụng bằng cách sử dụng run-android run-android.


1

Đây là các bước

$ adb kill-server

$ adb start-server

$ cd android

$ ./gradlew clean

$ cd ..

$ react-native run-android
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.