Sistem: Windows 10
Masalah saya: Mengatur Genymotion untuk mengarah ke SDK khusus tidak memiliki pengaruh apa pun. Saya masih menerima:
Tidak dapat memulai proyek di Android: tidak dapat menginstal pendengar smartsocket: tidak dapat mengikat ke 127.0.0.1:5037: Hanya satu penggunaan setiap alamat soket (protokol / alamat jaringan / port) biasanya diizinkan. (10048) tidak dapat membaca ok dari ADB Server * gagal memulai daemon * kesalahan: tidak dapat terhubung ke daemon
Apa yang saya temukan adalah ada perbedaan dalam versi ADB yang digunakan di seluruh sistem. Ini adalah perintah yang saya gunakan untuk menemukannya:
where /r C:\ adb.exe
Ini menghasilkan hasil:
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
Menavigasi ke setiap direktori dan menjalankan:
adb.exe version
Mengizinkan saya melihat bahwa Expo menjalankan versi ADB:
Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android
Sementara Genymotion menggunakan SDK kustom memiliki versi (c: \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):
Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android
Sebagai ujian saya mengambil file adb (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) dari
c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
dan menempatkannya di folder cadangan. Saya kemudian memindahkan file adb yang terletak di
c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
ke lokasi yang sama. Saya membunuh adb dengan:
adb kill-server
yang menyebabkan restart server adb secara otomatis karena perangkat Genymotion saya sudah berjalan. Saya menekan tombol "Restart" di dalam Expo XDE dan segera mulai bekerja. Ini adalah log tempat saya menekan tombol restart pada 1:13:04 pagi:
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).
Kesimpulan: Genymotion dan Expo mungkin perlu menggunakan versi adb yang sama agar Expo dapat berkomunikasi dengan baik dengan perangkat yang disimulasikan. Menunjuk Genymotion ke lokasi SDK android Anda serta memastikan Expo XDE memiliki versi yang sama akan memungkinkan komunikasi yang benar antar perangkat. Saya memindahkan versi Expo XDE ke lokasi SDK, tetapi Anda mungkin bisa pergi ke arah lain (ambil file ADB sdk dan letakkan di lokasi sumber daya Expo XDE).
PS Saya sudah melalui posting stackoverflow yang terkait dengan masalah ini. Supaya kalian tahu task manager saya menunjukkan tiga contoh menjalankan adb.exe. Jika Anda membunuh salah satu dari mereka, mereka baru saja kembali.
Semoga ini bisa membantu / bersorak