Próbuję uruchomić AwesomeProject na moim Nexus5 (Android 5.1.1).
Jestem w stanie zbudować projekt i zainstalować go na urządzeniu. Ale kiedy go uruchamiam, pojawia się czerwony ekran z napisem
Nie można pobrać pakietu JS. Czy zapomniałeś uruchomić serwer programistyczny lub podłączyć urządzenie?
W reakcji na natywnego iOS mogę wybrać ładowanie jsbundle offline. Jak mogę zrobić to samo dla Androida? (A przynajmniej, gdzie mogę skonfigurować adres serwera?)
Aktualizacja
Aby uruchomić z lokalnym serwerem, uruchom następujące polecenia w katalogu głównym projektu-macierzystego projektu
react-native start > /dev/null 2>&1 &
adb reverse tcp:8081 tcp:8081
proszę spojrzeć na odpowiedź dsissitka po więcej szczegółów.
Aby uruchomić bez serwera, spakuj plik js do apk, uruchamiając:
- utwórz folder zasobów pod
android/app/src/main
curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"
zapoznaj się z odpowiedzią kzzzf, aby uzyskać więcej informacji.
android
react-native
Mateusz
źródło
źródło
adb reverse
nie jest obsługiwane?adb reverse tcp:8081 tcp:8081
, potrzebujesz wersji ADB 1.0.32,reverse
opcja nie jest dostępna w wersji 1.0.31Odpowiedzi:
Aby spakować plik JS do aplikacji, gdy serwer działa (
react-native start
), pobierz pakiet do katalogu zasobów swojej aplikacji:W następnej wersji (0.12) naprawimy
react-native bundle
polecenie do pracy z projektami na Androida zgodnie z oczekiwaniami.źródło
Poniższe sprawiło, że działało to dla mnie na Ubuntu 14.04:
Aktualizacja : patrz
Aktualizacja 2 : @scgough Wystąpił ten błąd, ponieważ program React Native (RN) nie mógł pobrać kodu JavaScript z serwera programistów działającego na naszych stacjach roboczych. Możesz zobaczyć, dlaczego tak się dzieje:
https://github.com/facebook/react-native/blob/42eb5464fd8a65ed84b799de5d4dc225349449be/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java#L116-L137
Jeśli aplikacja RN wykryje, że korzystasz z Genymotion lub emulatora, próbuje pobrać JavaScript z GENYMOTION_LOCALHOST (10.0.3.2) lub EMULATOR_LOCALHOST (10.0.2.2). W przeciwnym razie zakłada, że używasz urządzenia i próbuje pobrać JavaScript z DEVICE_LOCALHOST (localhost). Problem polega na tym, że serwer deweloperów działa na lokalnym hoście stacji roboczej, a nie na urządzeniu, więc aby go uruchomić, musisz:
źródło
Ok, chyba pomyślałem, o co tu chodzi. Miało to związek z uruchomioną wersją
watchman
.W nowej powłoce uruchom
brew update
następnie:brew unlink watchman
następnie:brew install watchman
teraz możesz uruchomić
react-native start
z folderu projektuZostawiam tę powłokę otwartą, tworzę nowe okno powłoki i uruchamiam:
react-native run-android
z mojego folderu projektu. Wszystko jest w porządku ze światem.ps. Byłem pierwotnie w wersji 3.2 stróża. To uaktualniło mnie do 3.7.
pps. Jestem nowy, więc może nie jest to najszybsza droga do rozwiązania, ale zadziałało dla mnie.
* WIĘCEJ INFORMACJI DOTYCZĄCYCH URUCHAMIANIA / DEBUGOWANIA NA URZĄDZENIU *
Może się okazać, że jeśli wdrożysz aplikację na urządzeniu z Androidem, a nie w emulatorze, pojawi się czerwony ekran śmierci z komunikatem o błędzie
Unable to load JS Bundle
. Musisz ustawić serwer debugowania, aby urządzenie działało tak, jakby komputer reagował ... albo na jego nazwę, albo na adres IP.Menu
przycisk urządzeniaDev Settings
Debug server host for device
lubChange Bundle Location
192.168.1.10:8081
Więcej informacji: http://facebook.github.io/react-native/docs/running-on-device-android.html
źródło
brew uninstall watchman
zanim zainstaluje dla mnie najnowszą wersję.Z katalogu projektu uruchom
Wytwarza następujące:
źródło
react-native run-android
z folderu projektu. Buduje się OK w terminalu, ale jak tylko aplikacja otworzy się na moim urządzeniu,Unable to download JS bundle
Proste rozwiązanie, które działa dla mnie z Ubuntu 14.04.
Emulator (już uruchomiony) zwróci: Nie można pobrać pakietu JS; uruchom ponownie serwer JS:
Naciśnij Przeładuj JS na emulatorze. To zadziałało dla mnie. Mam nadzieję, że to pomoże
źródło
W aplikacji na Androida otworzyłem Menu (Command + M w Genymotion) -> Ustawienia deweloperów -> Host i port serwera debugowania dla urządzenia
ustaw wartość na: localhost: 8081
To zadziałało dla mnie.
źródło
Po wypróbowaniu kombinacji odpowiedzi tutaj, to działa dla mnie.
Używam Genymotion jako mojego emulatora.
1 Uruchom emulator Genymotion.
2 Z terminala
3 Załaduj ponownie z emulatora.
Ładuje się!
Mogę teraz zacząć się rozwijać.
źródło
Usuń aplikację z telefonu! Próbowałem kilku kroków, ale w końcu to się udało.
$ react-native run-android
Dev Settings
a następnie doDebug server host & port for device
. Podaj adres IP swojego serwera (adres IP komputera) i hosta8081
, np192.168.50.35:8081
. Na komputerze Mac możesz znaleźć adres IP swojego komputera pod adresemSystem Preferences -> Network -> Advanced... -> TCP/IP -> IPv4 Address
.Reload JS
.źródło
Najwyraźniej adb wsteczny został wprowadzony w Androidzie 5.0
Otrzymywanie „błąd: zamknięty” dwa razy na „adb wsteczny”
Chyba musimy kontynuować odpowiedź Kzzzfa
źródło
Nie mam wystarczającej reputacji, aby komentować, ale odnosi się to do odpowiedzi dsissitki. Działa również w systemie Windows 10.
Aby powtórzyć, polecenia to:
źródło
Oto proste kroki, aby uruchomić aplikację na Androidzie (wydanie):
1. Przejdź do katalogu głównego aplikacji.
2. Uruchom to polecenie.
Wszystkie twoje pliki zostaną skopiowane.
3. Utwórz podpisany APK.
Otwórz studio Android.
Kompilacja> Wygeneruj podpisany plik APK> [Wpisz wymagane dane, naciśnięcie klawisza musi zostać wygenerowane przed tym krokiem]
Twój pakiet APK powinien zostać wygenerowany bez żadnych błędów. Zainstaluj na swoim urządzeniu, a to powinno działać bez żadnych problemów.
Możesz także podłączyć swoje urządzenie i bezpośrednio nacisnąć ikonę Uruchom na Android Studio w celu przetestowania.
Generowanie naciśnięcia klawisza:
Idź do C: \ Program Files \ Java \ jdkx.x.x_x \ bin
Biegać
Prawdopodobnie poprosi Cię o podanie niektórych szczegółów. Zrób to, a otrzymasz plik naciśnięcia klawisza ( my_private_key.keystore ), którego można użyć do podpisania pliku APK.
źródło
react-native bundle
otrzymaniu błędu: Zduplikowane zasobyDostałem to na Linuksie po zatrzymaniu
react-native run-android
procesu. Wygląda na to, że serwer węzłów nadal działa, więc przy następnym uruchomieniu nie będzie działał poprawnie i aplikacja nie będzie mogła się połączyć.Rozwiązaniem tutaj jest zabicie procesu węzła działającego w Xterm, który możesz zabić, wchodząc w
ctrl-c
to okno (łatwiej) lub możesz golsof -n -i4TCP:8081
wtedy znaleźćkill -9 PID
.Następnie uruchom
react-native run-android
ponownie.źródło
Sprawdź połączenie Wi-Fi.
Inną możliwością może być brak połączenia z Wi-Fi, połączenie z niewłaściwą siecią lub nieprawidłowy adres IP w ustawieniach programisty. Z jakiegoś powodu mój Android odłączył się od Wi-Fi i nieświadomie zacząłem otrzymywać ten błąd.
źródło
Działa na urządzeniu
Znalazłem inną odpowiedź.
źródło
Aktualizacja
Teraz w systemie Windows nie ma potrzeby uruchamiania startu z reakcją natywną. Program pakujący uruchomi się automatycznie.
źródło
Jedną ważną rzeczą, aby sprawdzić, że nikt dotąd nie wspomniał: Sprawdź lokalną zaporę ogniową, upewnij się, że jest WYŁĄCZONA .
Zobacz moją odpowiedź tutaj: https://stackoverflow.com/a/41400708/1459275
źródło
Używam tylko Ubuntu i Androida i nie mogłem go uruchomić. Znalazłem bardzo proste rozwiązanie, które polega na zaktualizowaniu pliku package.json, zmieniając następujące wiersze:
do
Następnie uruchom serwer, pisząc
Dzięki temu urządzenie z Androidem szuka serwera węzłów na komputerze zamiast lokalnie w telefonie.
źródło
Początkowe pytanie było o przeładowywania aplikacji w phyisical urządzenia.
Podczas debugowania aplikacji na urządzeniu fizycznym (np. Przez adb) możesz ponownie załadować pakiet JS, klikając lewy górny przycisk „akcji” na urządzeniu. Spowoduje to otwarcie menu opcji (ponowne ładowanie, debugowanie JS zdalnie ...).
Mam nadzieję że to pomoże.
źródło
Ten błąd można łatwo rozwiązać, wykonując następujące czynności:
źródło
adb reverse tcp:8081 tcp:8081
w folderze głównym mojej aplikacji?Aby rozwiązać ten problem, postępuj zgodnie z instrukcjami wymienionymi na oficjalnej stronie . Ten problem występuje na prawdziwym urządzeniu, ponieważ pakiet JS znajduje się w systemie programistycznym, a aplikacja na Twoim prawdziwym urządzeniu nie wie o jego lokalizacji.
źródło
W nowym React Native (na pewno 0.59) konfiguracja debugowania jest w środku
android/app/src/debug/res/xml/react_native_config.xml
źródło
Uruchom dwa terminale na tym samym i 1-szym terminalu uruchom-uruchom natywny start i drugim terminalu uruchom natywny uruchom-android ten problem rozwiązano po prostu. Powodzenia
źródło
Hej, miałem do czynienia z tym problemem z moim rodzimym projektem reagowania nagim, symulator IOS działa dobrze, ale Android ciągle wyświetlał ten błąd. oto możliwe rozwiązanie, które zadziałało dla mnie.
krok 1, sprawdź, czy urządzenie adb jest autoryzowane, uruchamiając w swoim terminalu: urządzenia adb
jeśli jest to nieautoryzowane, uruchom następujące polecenia
krok 2, sudo adb kill-server krok 3, sudo adb start-server
następnie sprawdź, czy polecenie urządzeń adb pokazuje listę urządzeń podłączonych do emulatora-5554 urządzenia
zamiast nieautoryzowanego, jeśli jest to urządzenie zamiast nieautoryzowanego
krok 4, uruchom npx reag-native run-android
to zadziałało w moim przypadku Mam nadzieję, że to rozwiąże twój problem.
źródło
Uznałem, że to dziwne, ale mam rozwiązanie. Zauważyłem, że co jakiś czas mój folder projektu przechodził w tryb tylko do odczytu i nie mogłem go zapisać przed VS. Przeczytałem więc propozycję przeniesienia NPM z lokalnego użytkownika PATH do globalnej zmiennej systemowej PATH i działało to jak urok.
źródło
Uruchamianie npm start z katalogu-rodzimego-reagowania dla mnie zadziałało.
źródło