Запуск 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.

MariusR
источник
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