2015-07-20 18 views
30

Próbuję odwrócić do przodu portu przez ADB, ale po prostu zwraca tajemniczy błąd error: closed. Normalne prace przekierowujące. Fragment sesji:Pierwsze "błąd: zamknięty" dwa razy na "Adb Reverse"

$ adb forward tcp:59778 tcp:59778 
$ adb forward --list 
015d2109ce0c1a0f tcp:59778 tcp:59778 
$ adb forward --remove-all 
$ adb forward --list 
$ adb reverse --list 
error: closed 
error: closed 
$ adb reverse tcp:59778 tcp:59778 
error: closed 
error: closed 

Łączę przez USB do nieprzestrzegania zakorzenione Nexus 7 2012 Android 4.4.4 z Windows 7 Pro x64 na Boot Camp.

Odpowiedz

58

adb reverse został wprowadzony w Androidzie 5.0

+13

Jakie jest rozwiązanie w przypadku Androida 4.2? –

+4

Oto rozwiązanie: http://facebook.github.io/react-native/docs/running-on-device-android.html#configure-device-to-connect-to-the-dev-server-via-wi -fi –

+0

Otrzymuję to w 5.0 – hellyale

9

Wykonaj następujące kroki ostrożnie.

Uwaga: Wszystkie polecenia muszą być uruchamiane tylko wewnątrz projektu.

  1. Run to polecenie najpierw:

    npm react-native start 
    
  2. otworzyć kolejne okno w tym samym projekcie i uruchom:

    curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle" 
    
  3. To stworzy index.android.bundle w folderze aktywów

  4. Uruchom:

    npm react-native run-android 
    

Teraz można dostać apk w folderze build który będzie działać dobrze.

+3

Myślę, że powinno to być "reakcja na start natywny" i "reakcja na natywny ruch androida" bez "npm". npm jest do zarządzania pakietami ... – Mzn

0

przyczyną adb reverse nie działa na systemie Android przed 5 można prawdopodobnie korzystać z adb do przodu z usługą nasłuchiwania na Androida i tunelowania innych połączeń za pośrednictwem tego połączenia przychodzącego. Robię to głównie z ssh, ale potrzebujesz Androida na serwerze ssh. niż można połączyć za pomocą ssh -R incommingreverseportonandroid: hostyouwanttoforwardto: portyouwanttoforwardto sshuseronandroid @ localhost -p portyouhaveusedforadbforwaqrdtoaccessandroidssshserver

ale nie wiem jak włączyć serwer ssh na Androidzie, a może istnieje lepszy sposób przyczyną ssh wykorzystuje szyfrowanie co nie jest potrzebne na usb i używanie procesora cpu.

używam ten sposób z mojego serwera, aby udostępnić usługę kiedy jestem zmuszony za nat ...

nadzieję, że ktoś znajdzie sposób, aby doprowadzić tę teoretical drogę do praktycznej możliwości

20

Od adb reverse nie jest obsługiwany w wersjach Androida niższych niż 5.0, musisz użyć alternatywnej metody, na przykład zamiast połączenia przez Wi-Fi. Jeśli korzystasz z narzędzia React Native, Facebook dodał official documentation to connect to the development server via Wi-Fi. Cytowanie instrukcje dla MacOS, ale mają je także dla systemów Linux i Windows:

Method 2: Connect via Wi-Fi

You can also connect to the development server over Wi-Fi. You'll first need to install the app on your device using a USB cable, but once that has been done you can debug wirelessly by following these instructions. You'll need your development machine's current IP address before proceeding.

You can find the IP address in System Preferences → Network.

Make sure your laptop and your phone are on the same Wi-Fi network. Open your React Native app on your device. You'll see a red screen with an error. This is OK. The following steps will fix that. Open the in-app Developer menu. Go to Dev Settings → Debug server host for device. Type in your machine's IP address and the port of the local dev server (e.g. 10.0.1.1:8081). Go back to the Developer menu and select Reload JS.

+0

Pracował jak urok !. Dzięki. – KQI

+0

Najlepsza odpowiedź !! Dzięki – gatolgaj

+2

Jeszcze jedna uwaga: jeśli jesteś podobny do mnie, który rozwija się na urządzeniu z Androidem 4 (np. Smart tv), które nie obsługuje wstrząsów, możesz wywołać menu programisty w aplikacji na urządzeniu, uruchamiając: "adb shell input keyevent KEYCODE_MENU ". – yawl

3

adb reverse wymaga Android 5.0+. W przypadku urządzeń wcześniejszych musisz użyć obejścia takiego jak to.

Jeśli BusyBox zainstalowany na urządzeniu z systemem Android (większość zdjęć Genymotion zrobić), można naśladować adb reverse użyciu tego zaklęcia:

adb shell busybox nc -ll -p {guest port} -e busybox nc {host IP} {host port}

W tym przypadku „gość” jest Android OS uruchomiony w emulator i "host" to komputer, na którym działa emulator.

+0

Czy możesz podać przykład, jak uzyskać port gościa, adres IP hosta i port hosta? Użyłem urządzeń adb do uzyskania portu gościa. Następnie użyłem ifconfig en0, aby uzyskać adres IP hosta, wtedy myślę, że port to 8080, ponieważ używam native-response start --port = 8080, jednak pojawia się błąd "nc: bind Adres jest już w użyciu" – kayla

+0

nie zadziała, jeśli 2 urządzenia nie są podłączone do tej samej sieci, tylko USB nie wystarczy. Czym jest 'busybox nc' to tunelowanie strumieni. Dlaczego więc nie połączyć się z jedną siecią przez WiFi i zmodyfikować host pobierania pakietów odpowiednio do adresu IP maszyny deweloperskiej? – iamawebgeek