React-Native, Android, Genymotion: ADB sunucusu ACK yapmadı


168

Mac'te React-Native, Android ve Genymotion ile çalışıyorum. Çalıştığımda react-native run-android, başlatma işleminin sonunda şu satırları alıyorum:

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

Ancak şunu adb devicesdöndürür:

List of devices attached
192.168.59.101:5555 device

Şimdiye kadar uygulamamı emülatörde çalıştırmak için bir çözüm bulamadım. Aynı sorunla karşılaşan var mı?

Teşekkürler, Paul


Bu hata Genymotion çalışmasına bakılmaksızın gerçekleşebilir.
IgorGanapolsky

Yanıtlar:


319

Daha fazla araştırmadan sonra Genymotion'un varsayılan olarak kendi adb'sini kullandığını fark ettim.

resim açıklamasını buraya girin

Ben ana adb (aynı yerli-tepki tarafından kullanılan) geçti ve sorunu çözdü. Ben Genymotion adb ilk başlatıldığı için Address already in usehata mesajı aldım sanırım .


4
Bunu gönderdiğiniz için teşekkür ederiz. Neredeyse bir kalp krizi geçirdim, android stüdyolarımı 2.1 dün gece Önizleme 3'e güncelledim ve genymotion artık bağlanmayacak. Bu çözmemde bana yardımcı oldu.
Simon

7
Bu çözümü denedim, ancak yine de aynı hatayı aldım. Alternatif çözümler var mı?
calclavia

1
@ user2254679 Bu konuyu da kontrol ettiniz mi? stackoverflow.com/questions/5703550/…
Paul

@ Paul, hangi yolu sunduğunuzu açıklar mısınız? reat -native tarafından kullanılan bu adb nerede bulunur? Android SDK'mın yolunu sağlamaya çalışıyorum, ancak çalışmıyor. İngilizce en iyi olurdu.
K Pal

@KPal, yol kendi kurulumunuza özgüdür. Benim durumumda o zamanlarda Mac Android yüklemesinden standart yol vardı: /Users/$yourName/Library/Android/sdk. Android'i yüklediyseniz, Android sürümü / platformunuz göz önüne alındığında yolunuzu aramalısınız.
Paul

45

Genymotion kullanıyorum, ancak Paul'ün çözümü tek başına hatayı düzeltmedi (Mac için).

Yapmak zorundaydım:

SDK yöneticisi aracılığıyla Android SDK'yı en son sürüme (24.4.1) güncelleyin

Tip androidkomut satırında

SDK yöneticisinde en son SDK araçlarını bulun ve yükleyin.

Kurulduktan sonra SDK yolu aşağıdaki gibi yeni SDK konumunu güncellemelidir.

resim açıklamasını buraya girin

Ardından yeni SDK'yı kullanmak için $ ANDROID_HOME güncelleyin

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

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

Yolunuzu şu yolla görüntüleyerek eklendiğini onaylayın: echo $PATH

Sonra genymotion @Paul yukarıda söylediğini yapmak ve genymotion ADB aynı sdk kullanmak için işaret

resim açıklamasını buraya girin


Ubuntu 16.04 için çalışır. Nedense $ANDROID_HOME/toolsdizin sınıf yolunda gerekli olacağını düşündüm . Adb'ye bağlanmak için eklemeniz gerekir.
Orar

10

Sistem: Windows 10

Benim sorunum: Genymotion'u özel SDK'yı gösterecek şekilde ayarlamanın bir etkisi yoktu. Hala aldım:

Android'de proje başlatılamadı: smartsocket dinleyicisi yüklenemedi: 127.0.0.1:5037'ye bağlanamıyor: Normalde her soket adresinin (protokol / ağ adresi / bağlantı noktası) yalnızca bir kullanımına izin verilir. (10048) ADB Sunucusundan ok okunamadı * arka plan programı başlatılamadı * hatası: arka plan programına bağlanamıyor

Bulduğum şey, sistem genelinde kullanılan ADB sürümlerinde bir fark vardı. İşte onları bulmak için kullandığım komut:

where /r C:\ adb.exe

Bu sonuçlar üretti:

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

Her bir dizine gitme ve çalıştırma:

adb.exe version

Expo'nun ADB sürümünü çalıştırdığını görmeme izin ver:

Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android

Özel SDK'yı kullanan Genymotion sürümüne sahipken (c: \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):

Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android

Bir test olarak adb dosyalarını (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll)

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

ve bir yedekleme klasörüne yerleştirdiler. Daha sonra adresinde bulunan adb dosyalarını taşıdım

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

aynı yere. Adb ile birlikte öldürdüm:

adb kill-server

Bu, Genymotion cihazımın zaten çalışıyor olması nedeniyle adb sunucusunun otomatik olarak yeniden başlatılmasına neden oldu. Expo XDE'nin içindeki "Yeniden Başlat" düğmesine bastım ve hemen çalışmaya başladı. İşte 1:13:04 am yeniden başlatma düğmesine basın günlük:

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

Sonuç: Genymotion ve Expo'nun aynı adb sürümünü kullanması gerekebilir, böylece Expo simüle edilen cihazla düzgün iletişim kurabilir. Android SDK konumunuza Genymotion'i işaret etmenin yanı sıra Expo XDE'nin aynı sürüme sahip olmasını sağlamak cihazlar arasında doğru iletişime izin verecektir. Expo XDE sürümünü SDK konumuna taşıdım, ancak başka bir yolla gidebilirsiniz (sdk ADB dosyalarını alıp Expo XDE kaynak konumuna yerleştirebilirsiniz).

PS Ben tüm bu sorunla ilgili stackoverflow mesajlar aracılığıyla oldum. Sadece görev yöneticim adb.exe çalışan üç örnek gösterir biliyorum. Eğer herhangi birini öldürürsen geri gelirler.

Umarım bu yardımcı olur / şerefe


8

Belki reklam sürümleriniz uyumsuz olabilir

Kontrol:

adb version 

Sonra:

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

Bu ikisi farklıysa, burada bir hatayla karşılaşırsanız, adb'yi sys'den kaldırın ve platform araçlarında olanı / usr / bin /


4

Sisteminizi temiz tutmak istiyorsanız, Genymotion'u Android Studio olmadan da kullanabilirsiniz :

  1. Genymotion'un kopyasını bulun adb. MacOS'ta bu normaldir /Applications/Genymotion.app/Contents/MacOS/tools/.
  2. / Yürütmek satırı ekleyin - senin yoluna Genymotion araçları dizin ekleyin export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATHsenin için ~/.bash_profileya ~/.bash_rc.
  3. Terminalinizden adb çalıştırabildiğinizden emin olun.

( Https://docs.expo.io/versions/latest/workflow/genymotion adresinden )


4

sisteminizdeki adb sürümü android sdk platform araçlarındaki adb sürümünden farklıdır. Linux işletim sistemi için aşağıdaki öneriler benim için çalışıyor

  1. sys adb sürümünü kontrol edin aşağıdaki komutu çalıştırın

adb sürümü

Android Hata Ayıklama Köprüsü sürüm 1.0.39

  1. sdk adb sürümünü kontrol et

cd / root / Android / Sdk / platform araçları

./adb sürümü

Android Hata Ayıklama Köprüsü sürüm 1.0.32

  1. kopya

rm / usr / bin / adb

[Not: yukarıdaki komut mevcut adb'yi kaldırır, ardından adb'yi sdk / platform-tools dizininden kopyalar]

sudo cp / root / Android / Sdk / platform araçları / adb / usr / bin / adb

Sonra bu komutu kullanarak projeyi çalıştırın

tepki-yerli run-android


Bu Linux için iyi bir çözüm, android studio yüklü olan veya olmayan çalışır
maroof shittu

3

Expo UI'den kaçmaya çalışırken aynı şey vardı. Yanıtlarda açıklananlarla aynı şeyleri yaptım, ancak uygulama çalışmıyor. Bir kez exp androidkomut satırından çalıştırmayı denediğinde (proje klasöründe), uygulama başarıyla çalıştırıldı ve bir sonraki sefer Expo UI'den çalıştırıldı.


2

Benzer bir sorunum vardı.

İlk olarak, uygulamayı kaldırdım. Sonra, Android Studio'dan sağlanan android sdk'ye GenyMotion'ı işaret ettikten sonra, terminale "adb kill-server" ı çalıştırdım. Sonunda, "tepki yerli-run-android" yeniden koştu ve bir yapı başarısı var.


2

Benim için çalışılan adımlar:

  • $ adb kill-server

  • $ adb başlangıç ​​sunucusu

  • $ cd android

  • $ ./gradlew temiz

  • $ cd ..

  • $ tepki-yerel çalışma-android


2

Ubuntu için

Benim için çalışıyor !!

  1. sys adb sürümünü kontrol et

adb sürümü

Android Hata Ayıklama Köprüsü sürüm 1.0.39

2 sdk adb sürümünü kontrol edin

cd / home / kullanıcı_adı / Android / sdk / platform araçları

./adb sürümü

Android Hata Ayıklama Köprüsü sürüm 1.0.32

  1. kopya

sudo cp / ana sayfa / kullanıcı_adı / Android / sdk / platform araçları / adb / usr / local / bin

bu kadar! Şimdi çalışacak.


1

1. genymotion'da özel sdk yolunu kullanın. (Bunun bir işe yaramayacağını varsayalım, ikincisini yürütmeye çalışın)

2. yürütmek için bu komutu kullanın (SDK YOLU / adb o başlayacağım -n / Paket adı / MainActivity).

C: \ Kullanıcılar \ AppData \ Local \ Android \ Sdk / platform-tools / adb o başlayacağım -n com.example / com.example.ManiActivity

Ve tepki yerli çalıştırmak-android kullanarak uygulamayı çalıştırmayı deneyin.


1

Bunlar adımlar

$ adb kill-server

$ adb start-server

$ cd android

$ ./gradlew clean

$ cd ..

$ react-native run-android
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.