Uruchamianie Node.Js na Androidzie

96

Więc wiem, że było to dość często kwestionowane. Aby być dokładnym, na przykład w tych pytaniach:

  1. Uruchom serwer NodeJs w systemie Android
  2. Jak uruchomić projekt node.js na Androidzie?
    i
  3. NodeJS na IOS / Android

Każda przedstawiona opcja ma jednak problem:

  • Chcę go uruchomić na moim normalnym urządzeniu, więc chciałbym uniknąć instalowania innego systemu operacyjnego na moim urządzeniu

  • Praca nad JXCore została zatrzymana w zeszłym miesiącu i (być może w rezultacie) nie mogłem go skompilować (zobacz Nie mogę zainstalować jxcore-cordova )

  • Port Android NodeJs Anode nie był obsługiwany od 2014 roku i tak naprawdę nie był wtedy utrzymywany
  • Druga odpowiedź w drugim wątku, z którym się łączyłem, wspomniała, że ​​jest teraz oficjalna dystrybucja węzłów dla Androida, ale oprócz linku do przeglądania najnowszej nie mogłem znaleźć żadnych informacji o tym, jak z niej korzystać
  • Widziałem to również, ale wygląda na to, że urządzenie musi być podłączone do komputera (lub podobnego), aby uruchomić polecenia powłoki adb, podczas gdy chciałbym zrobić to jako oddzielną aplikację

W czasie, który minął od opublikowania tych pytań i jako „najlepsza opcja” JXCore wydaje się być bezużyteczny:
czy istnieje sposób na uruchomienie aplikacji node.js (w moim przypadku serwera) na urządzeniu z Androidem?

jeśli zastanawiasz się, dlaczego chciałbym tego: stworzyłem aplikację internetową z serwerem Node.Js i teraz chcę wersję, którą możesz uruchomić lokalnie z telefonu bez konieczności połączenia z Internetem. Oznacza to, że serwer musi działać na telefonie z systemem Android.

MariusR
źródło
1
Tylko z ciekawości, czy obchodzi Cię, czy ktoś inny może faktycznie korzystać z tej aplikacji, czy też po prostu próbujesz to zrobić, abyś mógł z niej korzystać w telefonie. Ponieważ widzę, że wymaga to wielu ustawień na końcu użytkowników / klientów, jeśli to w ogóle zadziała.
zgc7009
1
Całkowicie się zgodzę, że gdybym użył go tylko na swoim telefonie, moja obecna próba byłaby zbyt skomplikowana. Ten serwer Node.JS jest jednak rodzajem małego serwera aplikacji internetowych dla gier, więc wszyscy grający w grę musieliby mieć dostęp do tego serwera.
MariusR,
Nie będziesz w stanie spakować serwera Node.JS w kompilację Androida i bardzo niewiele osób będzie na tyle skłonnych technicznie, aby zainstalować go i grać w grę. Jeśli to tylko dla ciebie, to jedno, ale jeśli w ogóle ma być skalowane, nie wiem, jak to zadziała. Istnieje wiele aplikacji, zwłaszcza gier, które wymagają nie tylko połączenia z Internetem, ale i mocnego.
zgc7009
Wiem, ale ta aplikacja na Androida jest tylko dla mnie. Nie pojawi się w żadnym APP Store ani w niczym. Wdrożę również serwer w publicznej hostowanej przestrzeni internetowej. Dlatego nie chcę zaprzeczać używaniu node.js.
Chęć
2
Też o tym myślałem, ale biorąc pod uwagę, że mój serwer w dużej mierze opiera się na frameworku socket.io, znacznie utrudniło to utworzenie serwera w Javie. Poza tym miałem już dość dużo kodu w NodeJS i nie miałem ochoty przepisywać dużej części. Rozwiązanie wykorzystujące Termux działa wyjątkowo dobrze przy okazji i nadal używam go do swoich celów, chociaż muszę powiedzieć, że nigdy nie użyłbym go, gdyby mój nodejs był rzeczywistym produktem, który sprzedałbym, ponieważ jest na to zbyt niezgrabny.
MariusR

Odpowiedzi:

94

Miałem moment, w którym opadła mi szczęka - Termux pozwala zainstalować NodeJS na urządzeniu z Androidem!

Wydaje się, że działa on w przypadku podstawowego testu szybkości Websocket, który miałem pod ręką. Dostęp do obsługiwanego przez niego protokołu http można uzyskać zarówno lokalnie, jak i przez sieć.

Istnieje średni post, który wyjaśnia proces instalacji

Zasadniczo: 1. Zainstaluj termux 2. apt install nodejs 3. połącz węzeł!

Jedno ograniczenie, na które natknąłem się - wydaje się, że foldery współdzielone nie mają niezbędnych uprawnień do instalowania modułów. Może to być kwestia uprawnień do plików. Prywatna pamięć aplikacji działa dobrze.

Pyro
źródło
5
Dziwne jest to, że była już odpowiedź, którą zaakceptowałem na to pytanie, która opisuje to samo, co zrobiłeś, ale wygląda na to, że została usunięta z jakiegoś powodu. Dlatego zaakceptowałem twoją odpowiedź, kiedy zacząłem używać Termux i nadal go używam.
MariusR
6
Dzięki. Byłem zaskoczony, jak wiele musiałem przeszukiwać, zanim natknąłem się na odniesienie do Termux. Ten wątek był jednym z pierwszych wyników, na które natknąłem się, więc pomyślałem, że dodam go tutaj, aby dać następnemu szukającemu skrót;)
Pyro
Wydaje się, że jest OK, aby usunąć z przyjętymi odpowiedź z 11 upvotes na pytanie chronionym, prawdopodobnie dlatego, że był to „link tylko” odpowiedź, więc prawdopodobnie ten również zostaną usunięte w pewnym momencie ...
jcesarmobile
2
Czy wiesz, czy po wyjściu z aplikacji Termux serwer będzie działał w tle? A co z blokadą Androida? Dzięki.
wayofthefuture
6
Musiałem wykonać aktualizację $ apt update $ apt upgrade, zanim znajdzie nodejs Użyłem go na HUAWEI Note 6
M.Hefny
16

Dory - node.js

Świetna nowa aplikacja
Nie ma potrzeby rootowania telefonu i możesz uruchomić plik js z dowolnego miejsca.

  • node.js runtime (uruchom ES2015 / ES6, ES2016 javascript i node.js API w systemie Android)
  • Dokumenty API i natychmiastowy kod uruchamiany z doc
  • edytor kodu podświetlania składni
  • npm obsługuje
  • terminal linux (toybox 0.7.4). node.js REPL i npm polecenie w powłoce (dodaj opcję `` --no-bin-links '', jeśli wykonujesz npm w / sdcard)
  • StartOnBoot / LiveReload
  • dołączone są natywne pliki binarne node.js i npm. nie musisz być online.

Zaktualizuj instrukcję do węzła js 8 (async await)

  1. Pobierz plik zip node.js v8.3.0 arm i rozpakuj.

  2. skopiuj „węzeł” na sdcard Androida (/ sdcard lub / sdcard / path / to / ...)

  3. otwórz powłokę (sprawdź to w menu aplikacji)

  4. cd /data/user/0/io.tmpage.dorynode/files/bin (lub po prostu wpisz cd && cd .. && cd files / bin)

  5. węzeł rm

  6. cp / sdcard / node.

  7. (chmod a + x węzeł

( https://play.google.com/store/apps/details?id=io.tempage.dorynode&hl=en )

Sedric Heidarizarei
źródło
2
wydaje się mieć pewne problemy z uruchomieniem npm install, na przykład narzekał na brak dostępu do "/" i dostęp tylko do odczytu do FS.
Michael,
Skontaktuj się z nimi: ([email protected])
Sedric Heidarizarei
Wydaje się, że obsługuje tylko bardzo starą wersję Node. Około 6.x, podczas gdy aktualne, jak piszę, to 10.x / 11.x
hippietrail
aktualizacja jest teraz znacznie łatwiejsza: <pre> upgrade node.js: menu 'download file' -> check 'appfiles' -> check 'executable' arm v6.12.3 : dorynode.firebaseapp.com/v6.12.3_arm_release/node v8. 3.0 arm: dorynode.firebaseapp.com/v8.3.0_arm_release/node v8.9.4 arm (tylko dla Androida 5.0 powyżej): dorynode.firebaseapp.com/v8.9.4_arm_release/node v10.15.1 arm (tylko dla Androida 5.0 powyżej) : dorynode.firebaseapp.com/v10.15.1_arm_release/node patrz myket.ir/app/io.tempage.dorynode?lang=en </pre>
Kay Marquardt
15

Możesz użyć Node.js dla aplikacji mobilnych .

Działa na urządzeniach z Androidem i symulatorach, z gotowymi plikami binarnymi dla armeabi-v7a, x86, arm64-v8a, x86_64. Działa również na iOS, ale to wykracza poza zakres tego pytania.

Podobnie jak JXcore, jest używany do hostowania silnika Node.js w tym samym procesie co aplikacja, w dedykowanym wątku. W przeciwieństwie do JXcore, jest to w zasadzie czysty Node.js, zbudowany jako biblioteka, z kilkoma poprawkami dotyczącymi przenośności, aby działał na Androidzie. Oznacza to, że znacznie łatwiej jest aktualizować projekt za pomocą głównego Node.js.

Wtyczki do Cordova i React Native są również . Wtyczki zapewniają warstwę komunikacyjną między stroną JavaScript tych frameworków a stroną Node.js. Upraszczają również programowanie, zajmując się kilkoma rzeczami automatycznie, takimi jak pakowanie modułów i kompilowanie krzyżowe modułów natywnych w czasie kompilacji.

Pełne ujawnienie: pracuję dla firmy, która opracowuje Node.js dla aplikacji mobilnych.

Alexis Campailla
źródło
Dzięki, działa świetnie! W pełni zaspokajałem moje potrzeby npmi obsługę wielu plików (ostatecznie nie korzystałem, ale dobrze jest wiedzieć, że jest dostępny). Prawie się udało canvas, ale musiałbym wykonać kilka dodatkowych czynności w Linuksie (obecnie używam Windows) i znalazłem bibliotekę zastępczą, która tego nie wymaga.
GuiRitter
Cześć, Alexis. Czy to będzie ekspresowe?
mahesh
Cześć @mahesh, zdecydowanie możesz użyć ekspresu. Uruchamianie serwera http i komunikacji p2p (np. Przy użyciu websocketów) to bardzo powszechne scenariusze używania nodejs-mobile. Jeśli chcesz korzystać z Cordova, ta przykładowa aplikacja może być przydatna, ponieważ używa express: github.com/JaneaSystems/nodejs-mobile-samples/blob/ ...
Alexis Campailla
1

tutorial jak zbudować NodeJS dla Androida https://github.com/dna2github/dna2oslab/tree/master/android/build
istnieje kilka wersji v0.12, v4, v6, v7

Skompilowany plik binarny na Androida jest łatwy; na przykład uruchom skompilowany Nginx: https://github.com/dna2github/dna2mtgol/tree/master/fileShare

Wystarczy zmodyfikować kod, aby zamienić Nginx na NodeJS; lepiej jest używać usługi Android do uruchamiania serwera node js na zapleczu.

Doz Parp
źródło
..... zmodyfikuj kod, aby zamienić Nginx na NodeJS .... byłoby lepiej, gdybyś pokazał przykład, jak to zrobić.
Edijae Crusar,