Pracuję z React-Native, Android i Genymotion na Macu. Kiedy uruchamiam react-native run-android
, pod koniec operacji uruchamiania otrzymuję następujące linie:
...
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.
...
Jednak adb devices
zwraca to:
List of devices attached
192.168.59.101:5555 device
Jak dotąd nie znalazłem rozwiązania, aby uruchomić moją aplikację na emulatorze. Czy ktoś napotkał ten sam problem?
Dzięki, Paul
android
react-native
genymotion
Paweł
źródło
źródło
Odpowiedzi:
Po dalszych badaniach zdałem sobie sprawę, że Genymotion domyślnie używa własnego adb.
Przerzuciłem się na mój główny adb (ten sam, którego używa React-Native) i rozwiązałem problem. Myślę, że ponieważ adb Genymotion został uruchomiony jako pierwszy, otrzymałem
Address already in use
komunikat o błędzie.źródło
/Users/$yourName/Library/Android/sdk
. Jeśli zainstalowałeś Androida, powinieneś poszukać ścieżki, biorąc pod uwagę wersję Androida / platformę.Używam genymotion, ale samo rozwiązanie Paula nie naprawiło błędu (na Macu).
Musiałem:
Zaktualizuj Android SDK do najnowszej wersji (24.4.1) za pomocą menedżera SDK
Wpisz
android
wiersz poleceńW menedżerze SDK znajdź najnowsze narzędzia SDK i zainstaluj.
Po zainstalowaniu ścieżka SDK powinna zaktualizować nową lokalizację SDK, jak poniżej.
Następnie zaktualizuj $ ANDROID_HOME, aby używał nowego SDK
export ANDROID_HOME=/usr/local/Cellar/android-sdk/24.4.1_1
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
Potwierdź, że został dodany, wyświetlając swoją ścieżkę za pomocą
echo $PATH
Następnie w genymotion zrób to, co @Paul mówi powyżej i wskaż genymotion ADB, aby używał tego samego sdk
źródło
$ANDROID_HOME/tools
katalog nie będzie potrzebny w ścieżce klas. Musisz dodać, aby połączyć się z adb.System: Windows 10
Mój problem: ustawienie Genymotion tak, aby wskazywało na niestandardowy zestaw SDK, nie miało żadnego wpływu. Nadal otrzymałem:
Odkryłem, że istnieje różnica w wersjach ADB używanych w całym systemie. Oto polecenie, którego użyłem, aby je znaleźć:
Dało to wyniki:
Przechodzenie do każdego katalogu i uruchamianie:
Pozwolił mi zobaczyć, że Expo działa w wersji ADB:
Podczas gdy Genymotion używający niestandardowego zestawu SDK miał wersję (c: \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):
W ramach testu wziąłem pliki adb (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) z
i umieścił je w folderze kopii zapasowych. Następnie przeniosłem pliki adb znajdujące się pod adresem
do tej samej lokalizacji. Zabiłem adb z:
co spowodowało automatyczne ponowne uruchomienie serwera adb z powodu już uruchomionego mojego urządzenia Genymotion. Nacisnąłem przycisk „Uruchom ponownie” wewnątrz Expo XDE i natychmiast zaczęło działać. Oto dziennik, w którym nacisnąłem przycisk restartu o 1:13:04:
Wniosek: Genymotion i Expo może wymagać użycia tej samej wersji adb, aby Expo mogło poprawnie komunikować się z symulowanym urządzeniem. Wskazanie Genymotion na lokalizację Android SDK, a także zapewnienie, że Expo XDE ma tę samą wersję, umożliwi poprawną komunikację między urządzeniami. Przeniosłem wersję Expo XDE do lokalizacji SDK, ale być może będziesz mógł przejść w drugą stronę (weź pliki SDK ADB i umieść je w lokalizacji zasobów Expo XDE).
PS Przeszedłem przez wszystkie posty związane z tym problemem. Abyście wiedzieli, mój menedżer zadań pokazuje trzy uruchomione instancje adb.exe. Jeśli zabijesz któregoś z nich, po prostu wrócą.
Mam nadzieję, że to pomoże / na zdrowie
źródło
Może Twoje wersje adb są niezgodne
Czek:
Następnie:
Jeśli te dwa są różne, masz tutaj błąd, po prostu usuń adb z sys i skopiuj ten, który jest w narzędziach platformy do / usr / bin /
źródło
Jeśli chcesz utrzymać system w czystości, możesz również użyć Genymotion bez Android Studio :
adb
. W systemie macOS jest to normalne/Applications/Genymotion.app/Contents/MacOS/tools/
.export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATH
do swojego~/.bash_profile
lub~/.bash_rc
.(Z https://docs.expo.io/versions/latest/workflow/genymotion )
źródło
Wersja adb w twoim systemie różni się od wersji adb na platformie Android SDK-Tools. Poniżej propozycja działa dla mnie na system operacyjny Linux
Android Debug Bridge w wersji 1.0.39
Android Debug Bridge w wersji 1.0.32
[Uwaga: powyższe polecenie usuwa istniejący adb, a następnie skopiuj adb z katalogu sdk / platform-tools]
Następnie uruchom projekt za pomocą tego polecenia
źródło
Miałem to samo, gdy próbowałem uciec z interfejsu expo. Zrobił to samo, co opisano w odpowiedziach, ale aplikacja nie działała. Kiedy raz spróbowano uruchomić
exp android
z wiersza poleceń (w folderze projektu), aplikacja została uruchomiona pomyślnie, a następnym razem uruchomiono z interfejsem Expo.źródło
Miałem podobny problem.
Najpierw odinstalowałem aplikację. Następnie wskazałem GenyMotion na android SDK dostarczony z Android Studio. Następnie uruchomiłem "adb kill-server" na terminalu. W końcu ponownie uruchomiłem „Reaguj-natywny system android” i udało mi się zbudować.
źródło
Kroki zadziałały dla mnie:
$ adb kill-server
$ adb start-server
$ cd android
$ ./gradlew czysty
$ cd ..
$ react-native run-android
źródło
Dla Ubuntu
Mi to pasuje!!
Android Debug Bridge w wersji 1.0.39
2 sprawdź wersję sdk adb
Android Debug Bridge w wersji 1.0.32
to wszystko! Teraz zadziała.
źródło
1. użyj niestandardowej ścieżki sdk w genymotion. (Przypuśćmy, że ta nie zadziała oznacza, spróbuj wykonać drugą)
2.Ręcznie użyj tego polecenia, aby wykonać (SDK PATH / adb she ll am start -n / Package name / MainActivity).
C: \ Users \ AppData \ Local \ Android \ Sdk / platform-tools / adb ll am start -n com.example / com.example.ManiActivity
I spróbuj uruchomić aplikację za pomocą reaktywnego run-android.
źródło
Oto kroki
źródło