Ejecutando Node.Js en Android

95

Entonces sé que esto se ha cuestionado bastante. Para ser exactos por ejemplo en estas preguntas:

  1. Ejecute el servidor NodeJs en Android
  2. ¿Cómo ejecutar mi proyecto node.js en Android?
    y
  3. NodeJS en IOS / Android

Sin embargo, cada opción presentada tiene un problema:

  • Quiero ejecutarlo en mi dispositivo normal, así que me gustaría evitar instalar otro sistema operativo en mi dispositivo

  • El trabajo en JXCore se detuvo el mes pasado y (tal vez como resultado) no pude compilarlo (consulte No se puede instalar jxcore-cordova )

  • El puerto de Android nodejs ánodo no se ha trabajado desde 2014 y en realidad no estaba mantenido en ese entonces de todos modos
  • La segunda respuesta en el segundo hilo al que me vinculé mencionó que ahora hay una distribución oficial de nodos para Android, pero aparte de un enlace al sitio web de navegación del último dist, no pude encontrar ninguna información sobre cómo usarlo realmente
  • También vi esto, pero parece que el dispositivo tiene que estar conectado a una PC (o similar) para ejecutar los comandos de adb shell, mientras que me gustaría hacerlo como una aplicación separada.

Con el tiempo que pasó desde que se publicaron estas preguntas y como la "mejor opción", JXCore parece ahora inutilizable:
¿Hay alguna forma de ejecutar una aplicación node.js (un servidor en mi caso) en un dispositivo Android?

Si se pregunta por qué querría esto: hice una aplicación web con un servidor Node.Js y ahora quiero una versión que pueda ejecutar localmente desde su teléfono sin necesidad de una conexión a Internet. Esto significa que el servidor debe ejecutarse en un teléfono Android.

MariusR
fuente
1
Solo por interés, ¿le importa si alguien más puede usar esta aplicación o simplemente está tratando de que pueda usarla en su teléfono? Porque puedo ver que esto requiere mucha configuración en el extremo de los usuarios / clientes si pudiera funcionar.
zgc7009
1
Estoy totalmente de acuerdo en que si lo usara en mi teléfono, mi intento actual sería demasiado complicado. Sin embargo, este servidor Node.JS es una especie de servidor de aplicaciones web de juegos pequeño, por lo que todos los que juegan deberían tener acceso a ese servidor.
MariusR
No podrá empaquetar un servidor Node.JS en una compilación de Android y muy pocas personas estarán lo suficientemente inclinadas técnicamente para instalarlo para jugar un juego. Si es solo para usted, eso es una cosa, pero si se supone que se debe escalar, no veo cómo va a funcionar. Hay muchas aplicaciones, particularmente juegos que requieren no solo una conexión a Internet, sino una fuerte.
zgc7009
Lo sé, pero esta aplicación en Android es solo para mí. No subirá en ninguna tienda de aplicaciones ni nada. También desplegaré el servidor en un espacio web alojado público. Es por eso que no quiero negar el uso de node.js. La voluntad de hacer una versión sin conexión fue pensando "¿y si quiero jugar con mis amigos sin conexión?"
MariusR
2
También pensé en eso, pero teniendo en cuenta que mi servidor depende en gran medida del marco socket.io, hizo que crear el servidor en Java fuera más difícil. Además, ya tenía bastante código en NodeJS y no tenía ganas de reescribir una gran parte. La solución que usa Termux funciona extremadamente bien por cierto y todavía la uso para mi propósito, aunque debo decir que nunca la usaría si mi nodejs fuera un producto real que vendería, ya que es demasiado torpe para eso.
MariusR

Respuestas:

90

Acabo de tener un momento de asombro : ¡ Termux te permite instalar NodeJS en un dispositivo Android!

Parece funcionar para una prueba de velocidad básica de Websocket que tenía a mano. Se puede acceder al http servido por él tanto localmente como en la red.

Hay una publicación mediana que explica el proceso de instalación.

Básicamente: 1. Instale termux 2. apt install nodejs 3. ¡enciéndalo!

Me he encontrado con una restricción: parece que las carpetas compartidas no tienen los permisos necesarios para instalar módulos. Podría ser solo una cuestión de permiso de archivo. El almacenamiento de la aplicación privada funciona bien.

Pyro
fuente
5
Lo extraño es que ya había una respuesta que acepté para esta pregunta que describía lo mismo que hiciste, pero parece que se eliminó por alguna razón. Es por eso que acepté su respuesta cuando comencé a usar Termux en ese entonces y todavía lo estoy usando.
MariusR
6
Gracias. Me sorprendió la cantidad de búsquedas que tuve que hacer antes de encontrarme con una referencia de Termux. Este hilo fue uno de los primeros resultados con los que me encontré, así que pensé que lo agregaría aquí para darle al siguiente buscador un atajo;)
Pyro
Parece que está bien eliminar la respuesta aceptada con 11 votos a favor en una pregunta protegida, probablemente porque era una respuesta de "solo enlace", por lo que probablemente esta también se eliminará en algún momento ...
jcesarmobile
2
¿Sabe si permitirá que el servidor siga ejecutándose en segundo plano si sale de la aplicación Termux? ¿Qué tal cuando bloqueas el Android? Gracias.
wayofthefuture
5
Tuve que hacer $ apt update $ apt upgrade antes de que encuentre nodejs Lo usé en HUAWEI Note 6
M.Hefny
16

Dory - node.js

Gran aplicación nueva
No es necesario rootear su teléfono y puede ejecutar su archivo js desde cualquier lugar.

  • tiempo de ejecución de node.js (ejecute ES2015 / ES6, ES2016 javascript y las API de node.js en Android)
  • Documentos de API y código instantáneo ejecutados desde doc
  • editor de código de resaltado de sintaxis
  • npm admite
  • terminal linux (toybox 0.7.4). comando node.js REPL y npm en shell (agregue la opción '--no-bin-links' si ejecuta npm en / sdcard)
  • StartOnBoot / LiveReload
  • Se incluyen el binario nativo node.js y npm. no es necesario estar en línea.

Actualice la instrucción al nodo js 8 (async await)

  1. Descargue el archivo zip de node.js v8.3.0 arm y descomprímalo.

  2. copiar 'nodo' a la tarjeta sd de Android (/ sdcard o / sdcard / ruta / a / ...)

  3. abre el caparazón (compruébalo en el menú de la aplicación)

  4. cd /data/user/0/io.tmpage.dorynode/files/bin (o simplemente escriba cd && cd .. && cd files / bin)

  5. nodo rm

  6. cp / sdcard / node.

  7. (chmod a + x nodo

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

Sedric Heidarizarei
fuente
2
parece tener algunos problemas al ejecutar npm install, se quejó de no tener acceso a "/" y de acceso de solo lectura al FS, por ejemplo.
Michael
Contáctalos: ([email protected])
Sedric Heidarizarei
Parece que solo admite una versión muy antigua de Node. Aproximadamente 6.x mientras actualizo esto es 10.x / 11.x
hippietrail
la actualización es mucho más fácil ahora: <pre> actualizar node.js: menú 'descargar archivo' -> verificar 'archivos de aplicaciones' -> verificar 'ejecutable' v6.12.3 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 (solo para Android 5.0 arriba): dorynode.firebaseapp.com/v8.9.4_arm_release/node v10.15.1 arm (solo para Android 5.0 arriba) : dorynode.firebaseapp.com/v10.15.1_arm_release/node ver myket.ir/app/io.tempage.dorynode?lang=en </pre>
Kay Marquardt
13

Puede utilizar Node.js para aplicaciones móviles .

Funciona en dispositivos y simuladores Android, con binarios prediseñados para armeabi-v7a, x86, arm64-v8a, x86_64. También funciona en iOS, aunque eso está fuera del alcance de esta pregunta.

Al igual que JXcore, se utiliza para alojar un motor Node.js en el mismo proceso que la aplicación, en un hilo dedicado. A diferencia de JXcore, es básicamente Node.js puro, construido como una biblioteca, con algunas correcciones de portabilidad para ejecutarse en Android. Esto significa que es mucho más fácil mantener el proyecto actualizado con la línea principal de Node.js.

Los complementos para Cordova y React Native también están disponibles. Los complementos proporcionan una capa de comunicación entre el lado de JavaScript de esos marcos y el lado de Node.js. También simplifican el desarrollo al encargarse de algunas cosas automáticamente, como módulos de empaquetado y módulos nativos de compilación cruzada en el momento de la compilación.

Divulgación completa: trabajo para la empresa que desarrolla Node.js para aplicaciones móviles.

Alexis Campailla
fuente
Gracias, funciona genial! Satisfecho completamente mis necesidades npmy soporte para múltiples archivos (terminé sin usar, pero es bueno saber que está disponible). Casi me las arreglé para hacer el canvastrabajo, pero necesitaría tomar algunos pasos adicionales en Linux (actualmente usando Windows) y encontré una biblioteca de reemplazo que no lo requiere.
GuiRitter
Hola, Alexis. ¿Funcionará rápido?
mahesh
Hola @mahesh, definitivamente puedes usar express. La ejecución de un servidor http y comunicaciones p2p (por ejemplo, con websockets) son escenarios muy comunes para usar nodejs-mobile. En caso de que desee utilizar Cordova, puede encontrar útil esta aplicación de muestra, ya que utiliza express: github.com/JaneaSystems/nodejs-mobile-samples/blob/…
Alexis Campailla
1

el tutorial de cómo construir NodeJS para Android https://github.com/dna2github/dna2oslab/tree/master/android/build
hay varias versiones v0.12, v4, v6, v7

Es fácil ejecutar binarios compilados en Android; por ejemplo, ejecute Nginx compilado: https://github.com/dna2github/dna2mtgol/tree/master/fileShare

Solo necesita modificar el código para reemplazar Nginx a NodeJS; es mejor si usa Android Service para ejecutar el servidor node js en el backend.

Doz Parp
fuente
..... modificar el código para reemplazar Nginx a NodeJS .... sería mejor si mostrara un ejemplo sobre cómo hacer esto.
Edijae Crusar