Ausführen von Node.Js auf Android

95

Ich weiß also, dass dies ziemlich oft in Frage gestellt wurde. Um genau zu sein, zum Beispiel in diesen Fragen:

  1. Führen Sie den NodeJs-Server in Android aus
  2. Wie starte ich mein node.js Projekt auf Android?
    und
  3. NodeJS unter IOS / Android

Jede vorgestellte Option hat jedoch ein Problem:

  • Ich möchte es auf meinem normalen Gerät ausführen, um die Installation eines anderen Betriebssystems auf meinem Gerät zu vermeiden

  • Die Arbeit an JXCore wurde letzten Monat eingestellt und (möglicherweise als Ergebnis) konnte ich es nicht zum Kompilieren bringen (siehe jxcore-cordova kann nicht installiert werden ).

  • Der Android-Port von NodeJs Anode wurde seit 2014 nicht mehr bearbeitet und war damals sowieso nicht wirklich gewartet
  • Die zweite Antwort im zweiten Thread, auf den ich verlinkt habe, erwähnt, dass es jetzt eine offizielle Knotenverteilung für Android gibt, aber abgesehen von einem Link zur Browse-Website der neuesten Version konnte ich keine Informationen darüber finden, wie man sie tatsächlich verwendet
  • Ich habe dies auch gesehen, aber es scheint, dass das Gerät an einen PC (oder einen ähnlichen) angeschlossen sein muss, um die ADB-Shell-Befehle auszuführen, während ich es als separate App erstellen möchte

Mit der Zeit, die vergangen ist, seit diese Fragen gestellt wurden und als "beste Option" scheint JXCore jetzt unbrauchbar zu sein:
Gibt es eine Möglichkeit, eine Anwendung node.js (in meinem Fall ein Server) auf einem Android-Gerät auszuführen?

Wenn Sie sich fragen, warum ich das möchte: Ich habe eine WebApp mit einem Node.Js-Server erstellt und möchte jetzt eine Version, die Sie lokal von Ihrem Telefon aus starten können, ohne dass eine Internetverbindung erforderlich ist. Dies bedeutet, dass der Server auf einem Android-Telefon ausgeführt werden muss.

MariusR
quelle
1
Interessiert es Sie aus Interesse, ob jemand anderes diese App tatsächlich verwenden kann, oder ob Sie nur versuchen, sie so zu gestalten, dass Sie sie auf Ihrem Telefon verwenden können. Denn ich kann sehen, dass dies viel Setup auf den Benutzern / Clients erfordert, wenn es überhaupt funktionieren könnte.
zgc7009
1
Ich würde voll und ganz zustimmen, dass mein aktueller Versuch viel zu kompliziert wäre, wenn ich es nur auf meinem Handy verwenden würde. Dieser Node.JS-Server ist jedoch eine Art kleiner Spiel-Webanwendungsserver, sodass jeder, der das Spiel spielt, Zugriff auf diesen Server haben muss.
MariusR
Sie werden nicht in der Lage sein, einen Node.JS-Server in einem Android-Build zu bündeln, und nur sehr wenige Leute werden technisch geneigt genug sein, ihn zu installieren, um ein Spiel zu spielen. Wenn es nur für Sie ist, ist das eine Sache, aber wenn es überhaupt skaliert werden soll, sehe ich nicht, wie das funktionieren wird. Es gibt viele Apps, insbesondere Spiele, die nicht nur eine Internetverbindung erfordern, sondern auch eine starke.
zgc7009
Ich weiß, aber diese APP auf Android ist nur für mich. Es wird in keinem APP Store oder so etwas angezeigt. Ich werde den Server auch auf einem öffentlich gehosteten Webspace bereitstellen. Aus diesem Grund möchte ich die Verwendung von node.js nicht negieren. Der Wille, eine Offline-Version zu
erstellen,
2
Ich habe auch darüber nachgedacht, aber da mein Server stark vom socket.io-Framework abhängt, wurde es schwieriger, den Server auf Java zu erstellen. Außerdem hatte ich bereits ziemlich viel Code in NodeJS und ich hatte keine Lust, einen großen Teil davon neu zu schreiben. Die Lösung mit Termux funktioniert übrigens sehr gut und ich benutze sie immer noch für meinen Zweck, obwohl ich sagen muss, dass ich sie niemals verwenden würde, wenn mein NodeJS ein tatsächliches Produkt wäre, das ich verkaufen würde, da es dafür viel zu klobig ist.
MariusR

Antworten:

88

Ich hatte gerade einen atemberaubenden Moment - mit Termux können Sie NodeJS auf einem Android-Gerät installieren!

Es scheint für einen grundlegenden Websocket-Geschwindigkeitstest zu funktionieren, den ich zur Hand hatte. Auf die von ihm bereitgestellte http kann sowohl lokal als auch im Netzwerk zugegriffen werden.

Es gibt einen mittleren Beitrag, der den Installationsprozess erklärt

Grundsätzlich gilt: 1. Termux installieren 2. apt nodejs installieren 3. knoten!

Eine Einschränkung, auf die ich gestoßen bin: Es scheint, dass die freigegebenen Ordner nicht über die erforderlichen Berechtigungen zum Installieren von Modulen verfügen. Es könnte nur eine Dateiberechtigungssache sein. Der private App-Speicher funktioniert einwandfrei.

Pyro
quelle
5
Das Seltsame ist, dass ich bereits eine Antwort auf diese Frage akzeptiert habe, die dasselbe beschreibt, was Sie getan haben, aber es scheint, als wäre sie aus irgendeinem Grund gelöscht worden. Deshalb habe ich Ihre Antwort akzeptiert, als ich damals mit Termux angefangen habe und es immer noch benutze.
MariusR
6
Vielen Dank. Ich war überrascht, wie viel ich suchen musste, bevor ich auf eine Referenz von Termux stieß. Dieser Thread war eines der ersten Ergebnisse, auf die ich gestoßen bin, also würde ich ihn hier hinzufügen, um dem nächsten Sucher eine Verknüpfung zu geben;)
Pyro
Es scheint in Ordnung zu sein, die akzeptierte Antwort mit 11 Upvotes zu einer geschützten Frage zu löschen, wahrscheinlich weil es sich um eine "Nur-Link" -Antwort handelte, daher wird diese wahrscheinlich auch irgendwann gelöscht ...
jcesarmobile
2
Wissen Sie, ob der Server dadurch im Hintergrund weiter ausgeführt werden kann, wenn Sie die Termux-App beenden? Wie wäre es, wenn Sie den Android sperren? Vielen Dank.
Wayofthefuture
5
Ich musste $ apt update $ apt upgrade machen, bevor es nodejs findet, die ich auf HUAWEI Note 6
M.Hefny
16

Dory - node.js

Tolle neue Anwendung Sie
müssen Ihr Telefon nicht rooten und können Ihre js-Datei von jedem Ort aus ausführen.

  • node.js Laufzeit (führen Sie ES2015 / ES6, ES2016 Javascript und node.js APIs in Android aus)
  • API-Dokumente und Sofortcode werden von doc ausgeführt
  • Syntax-Hervorhebungscode-Editor
  • npm unterstützt
  • Linux-Terminal (Toybox 0.7.4). Befehl node.js REPL und npm in der Shell (Option '--no-bin-links' hinzufügen, wenn Sie npm in / sdcard ausführen)
  • StartOnBoot / LiveReload
  • native node.js binär und npm sind enthalten. Sie müssen nicht online sein.

Aktualisierungsanweisung auf Knoten js 8 (asynchron warten)

  1. Laden Sie die Arm-Zip-Datei node.js v8.3.0 herunter und entpacken Sie sie.

  2. Kopieren Sie 'Node' auf die SD-Karte von Android (/ sdcard oder / sdcard / path / to / ...)

  3. Öffne die Shell (sieh sie dir im Menü der App an)

  4. cd /data/user/0/io.tmpage.dorynode/files/bin (oder geben Sie einfach cd && cd .. && cd files / bin ein)

  5. rm Knoten

  6. cp / sdcard / node.

  7. (chmod a + x Knoten

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

Sedric Heidarizarei
quelle
2
scheint einige Probleme bei der Ausführung von npm install zu haben, beschwerte sich beispielsweise über keinen Zugriff auf "/" und schreibgeschützten Zugriff auf den FS.
Michael
Kontaktieren Sie sie: ([email protected])
Sedric Heidarizarei
Scheint nur eine sehr alte Version von Node zu unterstützen. Ungefähr 6.x, während ich aktuell bin, ist 10.x / 11.x
Hippietrail
Das Aktualisieren ist jetzt viel einfacher: <pre> upgrade node.js: Menü 'Datei herunterladen' -> 'appfiles' überprüfen -> 'ausführbare Datei' v6.12.3 überprüfen arm: 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 (nur für Android 5.0 oben): dorynode.firebaseapp.com/v8.9.4_arm_release/node v10.15.1 Arm (nur für Android 5.0 oben) : dorynode.firebaseapp.com/v10.15.1_arm_release/node siehe myket.ir/app/io.tempage.dorynode?lang=de </ pre>
Kay Marquardt
13

Sie können Node.js für mobile Apps verwenden .

Es funktioniert auf Android-Geräten und Simulatoren mit vorgefertigten Binärdateien für armeabi-v7a, x86, arm64-v8a, x86_64. Es funktioniert auch unter iOS, obwohl dies außerhalb des Rahmens dieser Frage liegt.

Wie JXcore wird es verwendet, um eine Node.js-Engine im selben Prozess wie die App in einem dedizierten Thread zu hosten. Im Gegensatz zu JXcore handelt es sich im Grunde genommen um reine Node.js, die als Bibliothek erstellt wurden und einige Portabilitätskorrekturen für Android enthalten. Dies bedeutet, dass es viel einfacher ist, das Projekt mit mainline Node.js auf dem neuesten Stand zu halten.

Plugins für Cordova und React Native sind ebenfalls verfügbar. Die Plugins bieten eine Kommunikationsschicht zwischen der JavaScript-Seite dieser Frameworks und der Node.js-Seite. Sie vereinfachen auch die Entwicklung, indem sie sich automatisch um einige Dinge kümmern, z. B. das Packen von Modulen und das Cross-Compilieren nativer Module zur Erstellungszeit.

Vollständige Offenlegung: Ich arbeite für das Unternehmen, das Node.js für mobile Apps entwickelt.

Alexis Campailla
quelle
Danke, funktioniert super! Ich habe meine Anforderungen voll erfüllt npmund Unterstützung für mehrere Dateien (wurde letztendlich nicht verwendet, aber es ist gut zu wissen, dass es verfügbar ist). Fast geschafft, canvasfunktioniert, aber ich müsste einige zusätzliche Schritte unter Linux (derzeit unter Windows) unternehmen und habe eine Ersatzbibliothek gefunden, die dies nicht erfordert.
GuiRitter
Hiya, Alexis. Wird dieser Lauf zum Ausdruck kommen?
Mahesh
Hallo @mahesh, du kannst definitiv Express benutzen. Das Ausführen eines http-Servers und der P2P-Kommunikation (z. B. mit Websockets) sind sehr häufige Szenarien für die Verwendung von nodejs-mobile.
Wenn
1

Das Tutorial zum Erstellen von NodeJS für Android https://github.com/dna2github/dna2oslab/tree/master/android/build
Es gibt verschiedene Versionen v0.12, v4, v6, v7

Es ist einfach, kompilierte Binärdateien unter Android auszuführen. Führen Sie beispielsweise kompiliertes Nginx aus: https://github.com/dna2github/dna2mtgol/tree/master/fileShare

Sie müssen nur den Code ändern, um Nginx durch NodeJS zu ersetzen. Es ist besser, wenn Sie den Android-Dienst verwenden, um den Knoten-JS-Server im Backend auszuführen.

Doz Parp
quelle
..... Code ändern, um Nginx durch NodeJS zu ersetzen .... Es wäre besser, wenn Sie ein Beispiel dafür zeigen würden.
Edijae Crusar