Запуск Node.Js на Android


96

Так что я знаю, что это вызывает довольно много вопросов. Если быть точным, например, в этих вопросах:

  1. Запустите сервер NodeJs в Android
  2. Как запустить мой проект node.js на android?
    а также
  3. NodeJS на IOS / Android

Однако у каждого представленного варианта есть проблема:

  • Я хочу запустить его на своем обычном устройстве, поэтому не хочу устанавливать на свое устройство другую ОС.

  • Работа над JXCore была остановлена ​​в прошлом месяце, и (возможно, в результате) мне не удалось его скомпилировать (см. Не удается установить jxcore-cordova )

  • Порт Android для анода NodeJs не работал с 2014 года и в то время действительно не поддерживался.
  • Второй ответ во втором потоке, на который я ссылался, упомянул, что сейчас есть официальный дистрибутив узлов для Android, но помимо ссылки на веб-сайт Browse последней версии dist. я не смог найти никакой информации о том, как его фактически использовать
  • Я также видел это, но похоже, что устройство должно быть подключено к ПК (или аналогичному) для запуска команд оболочки adb, в то время как я хотел бы сделать это как отдельное приложение

Прошло время, прошедшее с тех пор, как были опубликованы эти вопросы, и как «лучший вариант» JXCore, похоже, теперь непригоден для использования:
есть ли способ запустить приложение node.js (в моем случае сервер) на устройстве Android?

Если вам интересно, почему мне это нужно: я создал WebApp с сервером Node.Js, и теперь мне нужна версия, которую вы можете запускать локально со своего телефона, не требуя подключения к Интернету. Это означает, что сервер должен работать на телефоне Android.


1
Просто из интереса, вас волнует, может ли кто-то еще использовать это приложение, или вы просто пытаетесь сделать его так, чтобы вы могли использовать его на своем телефоне. Потому что я вижу, что это требует большой настройки на стороне пользователей / клиентов, если это вообще может работать.
zgc7009,

1
Я полностью согласен с тем, что если бы я просто использовал его на своем телефоне, моя текущая попытка была бы слишком сложной. Однако этот сервер Node.JS представляет собой своего рода небольшой сервер игровых веб-приложений, поэтому каждый, кто играет в игру, должен иметь доступ к этому серверу.
MariusR

Вы не сможете объединить сервер Node.JS в сборку Android, и очень немногие люди будут достаточно технически склонны устанавливать его для игры. Если это только для вас, это одно, но если это вообще предполагается масштабировать, я не понимаю, как это будет работать. Существует множество приложений, особенно игр, для которых требуется не только подключение к Интернету, но и надежное.
zgc7009

Я знаю, но это приложение для Android только для меня. Он не будет продаваться ни в одном магазине приложений или где-либо еще. Я также разверну сервер в общедоступном веб-пространстве. Вот почему я не хочу отказываться от использования node.js.
Желание

2
Я тоже думал об этом, но, учитывая, что мой сервер в значительной степени полагается на структуру socket.io, это усложняло создание сервера на Java. Кроме того, у меня уже было довольно много кода в NodeJS, и мне не хотелось переписывать большую его часть. Решение, использующее Termux, работает очень хорошо, кстати, и я до сих пор использую его для своих целей, хотя должен сказать, что никогда бы не использовал его, если бы мой nodejs был реальным продуктом, который я бы продавал, поскольку он слишком неуклюж для этого.
MariusR

Ответы:


95

У меня просто отвисла челюсть - Termux позволяет установить NodeJS на устройство Android!

Кажется, он работает для базового теста скорости Websocket, который у меня был под рукой. Обслуживаемый им http доступен как локально, так и в сети.

Есть средний пост, объясняющий процесс установки

В основном: 1. Установите termux 2. apt install nodejs 3. установите его!

Одно ограничение, с которым я столкнулся, - похоже, что общие папки не имеют необходимых разрешений для установки модулей. Это может быть просто разрешение файла. Частное хранилище приложений работает нормально.


5
Странно то, что на этот вопрос я уже получил ответ, описывающий то же самое, что и вы, но похоже, что он был удален по какой-то причине. Вот почему я принял ваш ответ, поскольку тогда я начал использовать Termux и использую его до сих пор.
MariusR

6
Спасибо. Я был удивлен тем, как много мне пришлось искать, прежде чем наткнуться на ссылку Termux. Эта цепочка была одним из первых результатов, с
Pyro

Кажется, можно удалить принятый ответ с 11 голосами «за» на защищенный вопрос, вероятно, потому что это был ответ «только ссылка», так что, вероятно, этот ответ также будет удален в какой-то момент ...
jcesarmobile

2
Знаете ли вы, позволит ли это серверу продолжать работать в фоновом режиме, если вы выйдете из приложения Termux? Как насчет того, когда вы заблокируете андроид? Спасибо.
wayofthefuture

6
Мне пришлось сделать $ apt update $ apt upgrade, прежде чем он найдет nodejs. Я использовал его на HUAWEI Note 6
M.Hefny

16

Дори - node.js

Отличное новое приложение
Не нужно рутировать свой телефон, и вы можете запускать свой js-файл из любого места.

  • node.js runtime (запустите ES2015 / ES6, ES2016 javascript и API node.js в android)
  • Документы API и мгновенный запуск кода из doc
  • редактор кода подсветки синтаксиса
  • npm поддерживает
  • терминал linux (toybox 0.7.4). node.js REPL и команда npm в оболочке (добавьте параметр --no-bin-links, если вы выполняете npm в / sdcard)
  • StartOnBoot / LiveReload
  • собственный двоичный файл node.js и npm включены. нет необходимости быть в сети.

Инструкция по обновлению до node js 8 (async await)

  1. Загрузите zip-файл arm node.js v8.3.0 и разархивируйте.

  2. скопируйте 'node' на SD-карту Android (/ SDCARD или / SDCARD / путь / к / ...)

  3. откройте оболочку (проверьте это в меню приложения)

  4. cd /data/user/0/io.tmpage.dorynode/files/bin (или просто введите cd && cd .. && cd files / bin)

  5. rm узел

  6. cp / SDCard / узел.

  7. (chmod a + x узел

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


2
похоже, есть некоторые проблемы с запуском npm install, например, жаловался на отсутствие доступа к "/" и доступ только для чтения к FS.
Майкл

Свяжитесь с ними: (tempage.io@gmail.com)
Седрик Хейдаризарей

Кажется, поддерживает только очень старую версию Node. Примерно 6.x, в то время как текущий, как я
пишу, это 10.x

обновление стало намного проще: <pre> обновить node.js: меню «скачать файл» -> проверить «файлы приложений» -> проверить «исполняемый файл» 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 (только для android 5.0 и выше): dorynode.firebaseapp.com/v8.9.4_arm_release/node v10.15.1 arm (только для android 5.0 и выше) : dorynode.firebaseapp.com/v10.15.1_arm_release/node см. myket.ir/app/io.tempage.dorynode?lang=en </pre>
Кей Марквардт

Запуск среднего приложения Node на вашем телефоне кажется отличным способом заполнить его внутреннюю память :) Но скажем, у меня есть небольшое серверное приложение, которое не требует каталога ./node_modules и запускается из ./dist через nps serve dist. Будет ли это работать (теоретически), и если да, то как мне поставить его на телефон в нужном месте?
RJVB

15

Вы можете использовать Node.js для мобильных приложений .

Он работает на устройствах Android и симуляторах с предварительно созданными двоичными файлами для armeabi-v7a, x86, arm64-v8a, x86_64. Он также работает на iOS, хотя это выходит за рамки этого вопроса.

Как и JXcore, он используется для размещения движка Node.js в том же процессе, что и приложение, в выделенном потоке. В отличие от JXcore, это в основном чистый Node.js, созданный как библиотека, с несколькими исправлениями переносимости для работы на Android. Это означает, что поддерживать проект в актуальном состоянии намного проще с помощью основной версии Node.js.

Также доступны плагины для Cordova и React Native . Плагины обеспечивают уровень связи между стороной JavaScript этих фреймворков и стороной Node.js. Они также упрощают разработку, автоматически выполняя некоторые задачи, такие как упаковка модулей и кросс-компиляция собственных модулей во время сборки.

Полное раскрытие информации: я работаю в компании, которая разрабатывает Node.js для мобильных приложений.


Спасибо, отлично работает! Полностью удовлетворил мои потребности с npmподдержкой нескольких файлов (в итоге я не использовал, но хорошо знать, что он доступен). Почти удалось заставить canvasработать, но мне нужно было бы предпринять некоторые дополнительные шаги в Linux (в настоящее время использую Windows), и я нашел заменяющую библиотеку, которая этого не требует.
GuiRitter 08

Привет, Алексис. Будет ли это экспресс?
mahesh

Привет @mahesh, ты определенно можешь использовать экспресс. Запуск http-сервера и p2p-коммуникации (например, с помощью веб-сокетов) - очень распространенные сценарии использования nodejs-mobile. Если вы хотите использовать Cordova, вы можете найти этот образец приложения полезным, поскольку в нем используется экспресс: github.com/JaneaSystems/nodejs-mobile-samples/blob/…
Alexis Campailla


1

руководство по сборке NodeJS для Android https://github.com/dna2github/dna2oslab/tree/master/android/build
существует несколько версий v0.12, v4, v6, v7

На Android легко запустить скомпилированный двоичный файл; например, запустите скомпилированный Nginx: https://github.com/dna2github/dna2mtgol/tree/master/fileShare

Вам просто нужно изменить код, чтобы заменить Nginx на NodeJS; лучше использовать Android Service для запуска node js-сервера на бэкэнде.


..... измените код, чтобы заменить Nginx на NodeJS .... было бы лучше, если бы вы показали пример того, как это сделать.
Edijae Crusar

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.