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