Il y a un tas d'anciens SO fils traitant de l'exécution de NodeJS sur Android. La plupart d'entre elles ne sont plus viables (JXCore) et/ou fournissent des informations déroutantes, obsolètes, incomplètes ou erronées.
Par conséquent, j'ai enquêté sur ce qui semble être actuellement (à partir d'août 2017) des approches viables et trouvé trois candidats probables.
Pour décider entre eux, j'aimerais savoir:
Les approches viables sont:
En plus de cela, j'ai trouvé un certain nombre de ressources intéressantes:
À compter d'aujourd'hui (mars 2018), il existe une autre alternative viable non encore répertoriée dans les réponses actuelles: Node.js pour les applications mobiles .
À la base, le projet fournit une bibliothèque native pour incorporer Node.js dans des applications natives Android et iOS. mais il contient aussi des plugins pour React Native et Cordova .
Les fichiers binaires prédéfinis pour la bibliothèque sont disponibles pour Android armeabi-v7a, x86, arm64-v8a, x86_64 et pour iOS 64 bits.
La bibliothèque principale est un fork de nodejs/node-chakracore , qui à son tour est un fork de nodejs/node . La version Android est à peu près standard, Node.js, construite comme une bibliothèque, avec quelques correctifs de portabilité. La version iOS utilise le moteur ChakraCore au lieu de V8 (le remplacement de V8 par ChakraCore est possible grâce aux modifications apportées à la fourchette nodejs/node-chakracore).
Les plugins React Native et Cordova facilitent l'ajout de Node.js aux applications construites à l'aide de ces infrastructures. Le code Node.js s'exécute dans un moteur et un thread distincts de ceux du framework (React Native/Cordova). La communication entre les deux mondes JavaScript est réalisée via un pont de messagerie fourni par les plugins.
Plus d'informations, y compris de la documentation, sont disponibles sur le site Web project .
(Divulgation complète: je travaille pour la société qui développe Node.js pour les applications mobiles.)
J'ai reçu une réponse de @ dna2github , créateur de NodeBase (merci beaucoup!) Que je vais inclure ici (avec permission):
Salut,
Merci pour votre question. Je ferai une brève réponse à mon avis.
avantages:
les inconvénients:
avantages:
les inconvénients:
avantages:
les inconvénients:
Pas familier avec LiquidCore; créer un micro-service, en particulier à partir de l'URL, consiste, selon moi, à résoudre aucun stockage disponible directement sur iOS. react-native-node la partie Android est basée sur la méthode NodeBase et utilise le binaire préconstruit.
Pour NodeBase:
avantages:
les inconvénients:
Au début, je cours noeud en terminal; Je trouve que seulement dev peut facilement l'utiliser pour lancer js app. Mes amis et ma famille veulent aussi des outils, par exemple, créer une marque d'eau sur une photo par lot. NodeBase est créé pour qu'ils soient faciles à démarrer/arrêter l'application. Ensuite, ils ont juste besoin d'ouvrir le navigateur pour l'utiliser .. Une autre idée pour créer NodeBase est que nous pouvons créer des applications partageables qui peuvent être partagées dans le même réseau Wi-Fi. Lorsque l'hôte lance une application, celle-ci peut être visitée par des personnes proches. Ensuite, ils peuvent travailler et jouer ensemble. Par exemple, nous jouons au loup-garou et quand il n'y a pas de juge, nous allons lancer l'application loup-garou pour avoir un juge pour le premier tour. Nous pouvons également partager des fichiers entre appareils via téléchargement/téléchargement.
Pour moi, je peux construire ce que je veux de manière flexible, par exemple, je voudrais faire de mon Android un coureur d’apprentissage automatique; cela peut m'aider à exécuter des programmes d'apprentissage automatique à tout moment (avec node et python, donc dans mon autre référentiel: dna2oslab se concentre sur la construction de binaires) pour utiliser le temps d'exécution du téléphone.
Pour vous, si vous souhaitez porter votre application dans un court laps de temps, je vous en recommande 2; Si vous avez du temps et d’autres ressources, 1, c’est mieux. 3 si vous venez de faire un jouet/démo. 4 autres sont toujours possibles et faites votre imagination pour créer des œuvres.
Meilleurs voeux, Seven
Je suis l'auteur de LiquidCore . LiquidCore vous permet d'utiliser les implémentations complètes de Node.js sur Android et iOS (la prise en charge d'iOS vient de paraître dans la version 0.5.0 - septembre 2018).
LiquidCore est conçu pour permettre à plusieurs instances de Node de s'exécuter simultanément dans une application mobile native. Chaque instance a son propre système de fichiers virtuel et son support natif pour MySQL. L'objectif du projet est de permettre la création de "micro-applications" complètes à l'aide de JavaScript/WebAssembly, qui peut ensuite être intégré à d'autres applications, et je travaille toujours dans ce sens. Mais à partir d’aujourd’hui, cela fonctionne très bien si vous voulez juste un terrain de jeu Node.js.
Si vous voulez voir ce qu'il peut faire, une application de console de nœud simple est incluse pour les deux Android et iOS .
J'ai essayé d'utiliser J2V8 dans mon application Java Android pour exécuter un script JS via node.js. Il échoue avec cette erreur:
Java.lang.UnsupportedOperationException: StartNodeJS non pris en charge.
La réponse de J2V8 était:
"Les wrappers de nœuds ne sont pas disponibles sur Android, ils le sont uniquement sur les plates-formes de bureau (Windows, Mac, Linux). C'est le comportement attendu jusqu'à ce que nous ayons des fichiers binaires de nœuds pour Android."
Pour autant que je sache, il n'y a actuellement aucun projet d'implémentation de wrappers de nœuds pour Android.
Merci,
Alex Donnini