React-Native, Android, Genymotion: Server ADB tidak ACK

168

Saya bekerja dengan React-Native, Android, dan Genymotion di Mac. Ketika saya menjalankan react-native run-androidsaya mendapatkan baris ini di akhir operasi peluncuran:

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

Namun, adb deviceskembalikan ini:

List of devices attached
192.168.59.101:5555 device

Sejauh ini saya belum menemukan solusi untuk menjalankan aplikasi saya di emulator. Adakah yang mengalami masalah yang sama?

Terima kasih, Paul

Paul
sumber
Kesalahan ini dapat terjadi terlepas dari Genymotion yang berjalan.
IgorGanapolsky

Jawaban:

319

Setelah penelitian lebih lanjut saya menyadari bahwa Genymotion menggunakan secara default adb sendiri.

masukkan deskripsi gambar di sini

Saya beralih ke adb utama saya (yang sama dengan yang digunakan oleh react-native) dan itu memecahkan masalah. Saya kira itu karena adb Genymotion diluncurkan pertama kali saya mendapat Address already in usepesan kesalahan.

Paul
sumber
4
Terima kasih telah memposting ini. Saya hampir mengalami serangan jantung, saya memperbarui studio android saya 2.1 ke Preview 3 tadi malam dan genymotion tidak akan terhubung lagi. Ini membantu saya untuk menyelesaikannya.
Simon
7
Saya mencoba solusi ini, tetapi saya masih mendapatkan kesalahan yang sama. Apakah ada solusi alternatif?
calclavia
1
@ user2254679 apakah Anda juga memeriksa utas ini? stackoverflow.com/questions/5703550/…
Paul
@ Paul, bisakah Anda menguraikan jalur apa yang Anda sediakan? di mana adb ini berada yang digunakan oleh react-asli? Saya mencoba memberikan jalur Android SDK saya tetapi tidak berfungsi. dalam bahasa Inggris akan lebih baik.
K Pal
@KPal, path khusus untuk pengaturan Anda sendiri. Dalam kasus saya itu adalah jalan standar dari instalasi Android di Mac pada waktu itu: /Users/$yourName/Library/Android/sdk. Jika Anda menginstal Android, Anda harus mencari path Anda mengingat versi Android / platform Anda.
Paul
45

Saya menggunakan genymotion, tetapi solusi Paul sendiri tidak memperbaiki kesalahan (untuk Mac).

Saya harus:

Perbarui Android SDK ke versi terbaru (24.4.1) melalui manajer SDK

Ketikkan androidbaris perintah

Di manajer SDK, temukan alat SDK terbaru dan instal.

Setelah diinstal, jalur SDK harus memperbarui lokasi SDK baru seperti di bawah ini.

masukkan deskripsi gambar di sini

Kemudian perbarui $ ANDROID_HOME untuk menggunakan SDK baru

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

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

Konfirmasikan telah ditambahkan dengan melihat jalur Anda dengan echo $PATH

Kemudian dalam genymotion lakukan apa yang @Paul katakan di atas dan arahkan genymotion ADB untuk menggunakan SDK yang sama

masukkan deskripsi gambar di sini

smj2393
sumber
Ini berfungsi untuk ubuntu 16.04. Untuk beberapa alasan saya pikir $ANDROID_HOME/toolsdirektori tidak akan diperlukan di classpath. Anda perlu menambahkan untuk terhubung ke adb.
Orar
10

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

Kyle s
sumber
8

Mungkin versi adb Anda tidak cocok

Memeriksa:

adb version 

Kemudian:

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

Jika keduanya berbeda Anda memiliki kesalahan di sini, cukup hapus adb dari sys dan salin yang ada di platform-tools ke / usr / bin /

Aldo RVV
sumber
4

Jika ingin menjaga sistem Anda tetap bersih, Anda juga dapat menggunakan Genymotion tanpa Android Studio :

  1. Temukan salinan Genymotion tentang adb. Pada macOS ini biasanya/Applications/Genymotion.app/Contents/MacOS/tools/ .
  2. Tambahkan direktori alat Genymotion ke jalur Anda - jalankan / tambahkan baris export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATHke ~/.bash_profileatau ~/.bash_rc.
  3. Pastikan Anda dapat menjalankan adb dari terminal Anda.

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

cseelus
sumber
4

versi adb di sistem Anda berbeda dari versi adb di alat platform SDK Android. Saran di bawah ini berfungsi untuk saya untuk sistem operasi Linux

  1. periksa sys adb versi jalankan perintah di bawah ini

versi adb

Android Debug Bridge versi 1.0.39

  1. periksa sdk adb versi

cd / root / Android / SDK / platform-tools

./adb versi

Android Debug Bridge versi 1.0.32

  1. menyalin

rm / usr / bin / adb

[Catatan: perintah di atas menghapus adb yang ada kemudian salin adb dari direktori sdk / platform-tools]

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

Kemudian jalankan proyek menggunakan perintah ini

reaksi-asli run-android

Hoque MD Zahidul
sumber
ini adalah solusi yang baik untuk Linux, ia bekerja dengan atau tanpa menginstal studio android
maroof shittu
3

Saya memiliki hal yang sama ketika saya mencoba lari dari UI pameran. Melakukan hal yang sama, seperti dijelaskan dalam jawaban, tetapi aplikasi tidak berjalan. Ketika pernah mencoba menjalankan exp androiddari baris perintah (dalam folder proyek), aplikasi berjalan dengan sukses dan kali berikutnya berjalan dari Expo UI berhasil.

Aleksandr Suhhinin
sumber
2

Saya punya masalah serupa.

Pertama, saya uninstall aplikasi. Lalu, saya arahkan GenyMotion ke android sdk yang disediakan dari Android Studio Selanjutnya, saya menjalankan "adb kill-server" ke terminal. Akhirnya, saya kembali menjalankan "react-native run-android" dan mendapatkan kesuksesan membangun.

VocoJax
sumber
2

Langkah-langkah yang berhasil bagi saya adalah:

  • $ adb kill-server

  • $ adb start-server

  • $ cd android

  • $ ./gradlew bersih

  • $ cd ..

  • $ react-native run-android

Ragnar
sumber
2

Untuk Ubuntu

Ini bekerja untuk saya !!

  1. periksa sys adb versi

versi adb

Android Debug Bridge versi 1.0.39

2 periksa sdk adb versi

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

./adb versi

Android Debug Bridge versi 1.0.32

  1. menyalin

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

itu saja! Ini akan berfungsi sekarang.

Rajat vindru
sumber
1

1.menggunakan jalur sdk khusus dalam genymotion. (Misalkan yang ini tidak akan berfungsi berarti, Coba jalankan yang kedua)

2. Secara manual gunakan perintah ini untuk mengeksekusi (SDK PATH / adb dia akan mulai -n / Nama paket / MainActivity).

C: \ Users \ AppData \ Local \ Android \ Sdk / platform-tools / adb dia akan memulai -n com.example / com.example.ManiActivity

Dan coba jalankan aplikasi dengan menggunakan react-native run-android.

Priyanga
sumber
1

Inilah langkah-langkahnya

$ adb kill-server

$ adb start-server

$ cd android

$ ./gradlew clean

$ cd ..

$ react-native run-android
Muhammed Nazil
sumber