Exécuter Node.Js sur Android

95

Je sais donc que cela a été beaucoup remis en question. Pour être exact par exemple dans ces questions:

  1. Exécutez le serveur NodeJs sous Android
  2. Comment exécuter mon projet node.js sur Android?
    et
  3. NodeJS sur IOS / Android

Chaque option présentée a cependant un problème:

  • Je veux l'exécuter sur mon appareil normal, je voudrais donc éviter d'installer un autre système d'exploitation sur mon appareil

  • Le travail sur JXCore a été arrêté le mois dernier et (peut-être en conséquence) je n'ai pas pu le faire compiler (voir Impossible d'installer jxcore-cordova )

  • Le port Android de NodeJs Anode n'a pas été travaillé depuis 2014 et n'était pas vraiment entretenu à l'époque de toute façon
  • La deuxième réponse dans le deuxième fil de discussion auquel j'ai lié a mentionné qu'il existe une distribution de nœuds officielle pour Android maintenant, mais à part un lien vers le site Web de navigation de la dernière distribution, je n'ai pas trouvé d'informations sur la façon de l'utiliser.
  • J'ai également vu cela, mais il semble que l'appareil doit être connecté à un PC (ou similaire) pour exécuter les commandes adb shell alors que je voudrais en faire une application distincte

Avec le temps passé depuis que ces questions ont été postées et comme "meilleure option", JXCore semble désormais inutilisable:
existe-t-il un moyen d'exécuter une application node.js (un serveur dans mon cas) sur un appareil Android?

si vous vous demandez pourquoi je veux ceci: j'ai créé une WebApp avec un serveur Node.Js et je veux maintenant une version que vous pouvez lancer localement depuis votre téléphone sans nécessiter de connexion Internet. Cela signifie que le serveur doit fonctionner sur un téléphone Android.

MariusR
la source
1
Juste par intérêt, vous souciez-vous de savoir si quelqu'un d'autre peut réellement utiliser cette application ou essayez-vous simplement de la faire pour que vous puissiez l'utiliser sur votre téléphone. Parce que je peux voir que cela prend beaucoup de configuration sur la fin des utilisateurs / clients si cela pouvait même fonctionner.
zgc7009
1
Je suis tout à fait d'accord que si je l'utilisais simplement sur mon téléphone, ma tentative actuelle serait beaucoup trop compliquée. Ce serveur Node.JS est cependant une sorte de petit serveur d'applications Web de jeu, donc tout le monde devrait avoir accès à ce serveur.
MariusR
Vous ne pourrez pas regrouper un serveur Node.JS dans une version Android et très peu de gens seront techniquement suffisamment enclins à l'installer pour jouer à un jeu. Si c'est juste pour vous, c'est une chose, mais si c'est censé être mis à l'échelle du tout, je ne vois pas comment cela va fonctionner. Il existe de nombreuses applications, en particulier des jeux qui nécessitent non seulement une connexion Internet, mais également une connexion puissante.
zgc7009
Je sais mais cette application sur Android est juste pour moi. Il ne montera sur aucun APP Store ou quoi que ce soit. Je déploierai également le serveur sur un espace Web hébergé public. C'est pourquoi je ne veux pas annuler l'utilisation de node.js. La volonté de créer une version hors ligne me faisait penser "et si je veux y jouer avec mes amis hors ligne".
MariusR
2
J'y ai pensé aussi, mais étant donné que mon serveur dépend fortement du framework socket.io, cela a rendu la création du serveur en Java plus difficile. De plus, j'avais déjà pas mal de code dans NodeJS et je n'avais pas envie d'en réécrire une grande partie. La solution utilisant Termux fonctionne extrêmement bien et je l'utilise toujours dans mon but, même si je dois dire que je ne l'aurais jamais utilisée si mon nodejs était un produit réel que je vendrais car c'est beaucoup trop maladroit pour cela.
MariusR

Réponses:

90

Je viens de passer un moment à couper le souffle - Termux vous permet d'installer NodeJS sur un appareil Android!

Cela semble fonctionner pour un test de vitesse Websocket de base que j'avais sous la main. Le http servi par celui-ci est accessible à la fois localement et sur le réseau.

Il y a un article moyen qui explique le processus d'installation

Fondamentalement: 1. Installez termux 2. apt install nodejs 3. node it up!

Une restriction que j'ai rencontrée - il semble que les dossiers partagés ne disposent pas des autorisations nécessaires pour installer des modules. Cela pourrait simplement être une question de permission de fichier. Le stockage privé des applications fonctionne très bien.

Pyro
la source
5
La chose étrange est qu'il y avait déjà une réponse que j'ai acceptée pour cette question qui décrivait la même chose que vous avez faite, mais il semble qu'elle a été supprimée pour une raison quelconque. C'est pourquoi j'ai accepté votre réponse car j'ai commencé à utiliser Termux à l'époque et je l'utilise toujours.
MariusR
6
Merci. J'ai été surpris par le nombre de recherches que j'avais à faire avant de tomber sur une référence de Termux. Ce fil de discussion était l'un des premiers résultats que j'ai rencontrés, alors j'ai pensé l'ajouter ici pour donner un raccourci au prochain chercheur;)
Pyro
Il semble que ce soit correct de supprimer la réponse acceptée avec 11 votes positifs sur une question protégée, probablement parce que c'était une réponse "lien seulement", donc probablement celle-ci sera également supprimée à un moment donné ...
jcesarmobile
2
Savez-vous si cela permettra au serveur de continuer à fonctionner en arrière-plan si vous quittez l'application Termux? Et quand vous verrouillez l'Android? Merci.
wayofthefuture
5
J'ai dû faire la mise à jour de $ apt update $ apt avant de trouver nodejs Je l'ai utilisé sur HUAWEI Note 6
M.Hefny
16

Dory - node.js

Grande nouvelle application
pas besoin de rooter votre téléphone et vous pouvez exécuter votre fichier js à partir de n'importe où.

  • Runtime node.js (exécutez les API ES2015 / ES6, ES2016 javascript et node.js dans Android)
  • Documents API et code instantané exécutés à partir de doc
  • éditeur de code de coloration syntaxique
  • npm prend en charge
  • terminal Linux (toybox 0.7.4). node.js REPL et commande npm dans le shell (ajoutez l'option '--no-bin-links' si vous exécutez npm dans / sdcard)
  • StartOnBoot / LiveReload
  • Les binaires et npm natifs de node.js sont inclus. pas besoin d'être en ligne.

Mettre à jour l'instruction vers le nœud js 8 (attente asynchrone)

  1. Téléchargez le fichier zip arm node.js v8.3.0 et décompressez-le.

  2. copier 'node' sur la carte SD d'Android (/ sdcard ou / sdcard / path / to / ...)

  3. ouvrez le shell (vérifiez-le dans le menu de l'application)

  4. cd /data/user/0/io.tmpage.dorynode/files/bin (ou tapez simplement cd && cd .. && cd files / bin)

  5. noeud rm

  6. cp / sdcard / node.

  7. (chmod a + x nœud

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

Sedric Heidarizarei
la source
2
semble avoir quelques problèmes lors de l'exécution de npm install, se plaindre de l'absence d'accès à "/" et de l'accès en lecture seule au FS, par exemple.
Michael
Contactez-les: ([email protected])
Sedric Heidarizarei
Semble ne prendre en charge qu'une très ancienne version de Node. Environ 6.x alors que je poste actuellement, c'est 10.x / 11.x
hippietrail
la mise à jour est beaucoup plus facile maintenant: <pre> upgrade node.js: menu 'download file' -> check 'appfiles' -> check 'executable' v6.12.3 arm: dorynode.firebaseapp.com/v6.12.3_arm_release/node v8. Bras 3.0: dorynode.firebaseapp.com/v8.3.0_arm_release/node bras v8.9.4 (uniquement pour Android 5.0 ci-dessus): dorynode.firebaseapp.com/v8.9.4_arm_release/node v10.15.1 arm (uniquement pour Android 5.0 ci-dessus) : dorynode.firebaseapp.com/v10.15.1_arm_release/node voir myket.ir/app/io.tempage.dorynode?lang=en </pre>
Kay Marquardt le
13

Vous pouvez utiliser Node.js pour les applications mobiles .

Il fonctionne sur les appareils et simulateurs Android, avec des binaires pré-construits pour armeabi-v7a, x86, arm64-v8a, x86_64. Cela fonctionne également sur iOS, bien que cela ne fasse pas partie de cette question.

Comme JXcore, il est utilisé pour héberger un moteur Node.js dans le même processus que l'application, dans un thread dédié. Contrairement à JXcore, il s'agit essentiellement de Node.js pur, construit comme une bibliothèque, avec quelques correctifs de portabilité à exécuter sur Android. Cela signifie qu'il est beaucoup plus facile de maintenir le projet à jour avec la ligne principale Node.js.

Plugins pour Cordova et React Native sont également disponibles. Les plugins fournissent une couche de communication entre le côté JavaScript de ces frameworks et le côté Node.js. Ils simplifient également le développement en prenant en charge automatiquement certaines choses, comme l'empaquetage de modules et la compilation croisée de modules natifs au moment de la construction.

Divulgation complète: je travaille pour la société qui développe Node.js pour les applications mobiles.

Alexis Campailla
la source
Merci, fonctionne très bien! Entièrement satisfait de mes besoins npmet de la prise en charge de plusieurs fichiers (fini par ne pas utiliser, mais il est bon de savoir qu'il est disponible). canvasJ'ai presque réussi à faire fonctionner, mais j'aurais besoin de prendre des mesures supplémentaires sous Linux (utilisant actuellement Windows) et j'ai trouvé une bibliothèque de remplacement qui n'en a pas besoin.
GuiRitter
Salut, Alexis. Cette course sera-t-elle express?
mahesh le
Salut @mahesh, vous pouvez certainement utiliser express. L'exécution d'un serveur http et les communications p2p (par exemple avec des websockets) sont des scénarios très courants d'utilisation de nodejs-mobile. Si vous souhaitez utiliser Cordova, vous trouverez peut-être cet exemple d'application utile car il utilise express: github.com/JaneaSystems/nodejs-mobile-samples/blob/…
Alexis Campailla
1

le tutoriel sur la façon de construire NodeJS pour Android https://github.com/dna2github/dna2oslab/tree/master/android/build
il existe plusieurs versions v0.12, v4, v6, v7

Il est facile d'exécuter des binaires compilés sur Android; par exemple, exécutez Nginx compilé: https://github.com/dna2github/dna2mtgol/tree/master/fileShare

Il vous suffit de modifier le code pour remplacer Nginx par NodeJS; il est préférable d'utiliser le service Android pour exécuter le serveur node js sur le backend.

Doz Parp
la source
..... modifier le code pour remplacer Nginx par NodeJS .... ce serait mieux si vous montriez un exemple sur la façon de procéder.
Edijae Crusar