在Android上运行Node.Js


95

所以我知道这已经受到了很多质疑。确切地说,例如这些问题:

  1. 在Android中运行NodeJs服务器
  2. 如何在Android上运行我的node.js项目?
  3. IOS / Android上的NodeJS

提出的每个选项都有一个问题:

  • 我想在普通设备上运行它,所以我希望避免在设备上安装其他操作系统

  • 上个月停止了对JXCore的工作,并且(可能是结果)我无法对其进行编译(请参见无法安装jxcore-cordova

  • 自2014年以来就没有开发过NodeJs Anode的Android Port,而且当时并没有真正维护它
  • 我链接到的第二个线程中的第二个答案现在提到的是Android的官方节点分发,但是除了指向最新distBrowse-Web站点的链接之外,我找不到任何有关如何实际使用它的信息。
  • 我也看到了这一点,但似乎设备必须连接到PC(或类似设备)才能运行adb shell命令,而我想将其作为单独的App

自从发布这些问题以来,到现在已经过去了,并且作为“最佳选择”,JXCore现在似乎不可用:
是否可以在Android设备上运行node.js应用程序(在我的情况下为服务器)?

如果您想知道为什么要这样做:我用Node.Js服务器制作了一个WebApp,现在我想要一个可以从手机本地启动而无需Internet连接的版本。这意味着服务器需要在Android手机上运行。


1
只是出于兴趣,您是否在乎其他人是否可以实际使用此应用程序,或者您只是想制作它以便可以在手机上使用它。原因我可以看到,即使它可以工作,也需要在用户/客户端上进行大量设置。
zgc7009 '16

1
我完全同意,如果我只是在手机上使用它,那么我目前的尝试将过于复杂。该Node.JS服务器虽然是一种小型Game Web Application Server,所以每个玩游戏的人都必须有权访问该服务器。
MariusR '16

您将无法将Node.JS服务器捆绑到Android构建中,并且很少有人会在技术上倾向于安装它来玩游戏。如果只是为了您,那是一回事,但是如果应该将其扩展,那么我将看不到它是如何工作的。有很多应用程序,特别是不仅需要互联网连接而且还需要强大功能的游戏。
zgc7009 '16

我知道,但是Android上的这个APP只适合我。它不会在任何APP Store或任何其他产品上发布。我还将服务器部署到公共托管的Webspace中。这就是为什么我不想拒绝使用node.js。意志,使离线版本是我想:“如果我想和我的朋友一起玩脱机”。
MariusR

2
我也考虑过这一点,但考虑到我的服务器在很大程度上依赖于socket.io框架,这使得以Java方式创建服务器更加困难。另外,我已经在NodeJS中编写了很多代码,而且我不想重写大部分代码。顺便说一句,使用Termux的解决方案工作得非常好,尽管我不得不说如果我的nodejs是我要出售的实际产品,我将永远不会使用它,因为它太笨拙了。
MariusR

Answers:


88

我刚刚经历了令人jaw 目结舌的时刻-Termux允许您在Android设备上安装NodeJS

它似乎对我手头的基本Websocket速度测试有效。它所服务的http既可以在本地访问,也可以在网络上访问。

中间有一篇说明安装过程的文章

基本上是:1.安装termux 2. apt安装nodejs 3.使其注册!

我遇到的一个限制-似乎共享文件夹没有安装模块的必要权限。这可能只是文件权限。私人应用程序存储工作正常。


5
奇怪的是,对于这个问题,我已经接受了一个答案,它描述了您所做的相同的事情,但似乎由于某种原因而被删除了。这就是为什么当我从那时开始使用Termux并仍在使用它时,我接受了您的答案的原因。
MariusR

6
谢谢。在遇到Termux的参考文献之前,我必须进行多少搜索使我感到惊讶。此线程是我遇到的较早结果之一,因此尽管我将其添加到此处以为下一个搜索者提供捷径;)
Pyro

似乎可以在受保护的问题上删除带有11个投票的被接受答案,可能是因为它是“仅链接”答案,所以可能在某个时候也将删除该答案……
jcesarmobile

2
您是否知道如果退出Termux应用程序是否可以使服务器在后台继续运行?锁定Android怎么样?谢谢。
wayofthefuture

5
我必须先进行$ apt update $ apt升级,然后才能找到我在HUAWEI Note 6上使用过的nodejs
M.Hefny

16

海ry-node.js

很棒的新应用程序,
无需植根电话,您可以从任何位置运行js文件。

  • node.js运行时(在Android中运行ES2015 / ES6,ES2016 javascript和node.js API)
  • API文档和从文档运行的即时代码
  • 语法高亮代码编辑器
  • npm支持
  • linux终端(toybox 0.7.4)。shell中的node.js REPL和npm命令(如果在/ sdcard中执行npm,则添加'--no-bin-links'选项)
  • StartOnBoot / LiveReload
  • 包括本地的node.js二进制文件和npm。无需在线。

更新对节点js 8的指令(异步等待)

  1. 下载node.js v8.3.0 arm zip文件并解压缩。

  2. 复制'node'到android的sdcard(/ sdcard或/ sdcard / path / to / ...)

  3. 打开外壳(在应用程序菜单中查看)

  4. cd /data/user/0/io.tmpage.dorynode/files/bin(或者,只需键入cd && cd .. && cd files / bin)

  5. rm节点

  6. cp / sdcard / node。

  7. (chmod a + x节点

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


2
例如,在运行npm install时似乎有一些问题,例如抱怨无法访问“ /”和只读访问FS。
迈克尔(Michael)

与他们联系:(tempage.io@gmail.com)
Sedric Heidarizarei

似乎仅支持非常旧的Node版本。大约6.x,而我目前发布的是10.x / 11.x
hippietrail

现在,更新变得更加容易:<pre> upgrade node.js:“下载文件”菜单->检查“ appfiles”->检查“可执行文件” 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=zh-CN </ pre>
凯·马夸特

13

您可以将Node.js用于移动应用程序

它可在Android设备和模拟器上运行,并具有针对armeabi-v7a,x86,arm64-v8a,x86_64的预构建二进制文件。它也可以在iOS上使用,但这不在此问题的讨论范围之内。

与JXcore一样,它用于在专用线程中以与应用程序相同的过程托管Node.js引擎。与JXcore不同,它基本上是纯Node.js,作为库构建,具有一些可移植性修复程序,可在Android上运行。这意味着通过主线Node.js使项目保持最新状态要容易得多。

也提供用于CordovaReact Native的插件。插件提供了这些框架的JavaScript端和Node.js端之间的通信层。它们还通过自动处理一些事情来简化开发,例如打包模块和在构建时交叉编译本机模块。

全面披露:我在为移动应用程序开发Node.js的公司工作。


谢谢,效果很好!完全满足我的需求npm并提供了多个文件支持(最终没有使用,但是很高兴知道它可用)。几乎设法完成了canvas工作,但是我需要在Linux(目前使用Windows)中采取一些额外的步骤,我发现了一个不需要它的替换库。
GuiRitter

希亚·亚历克西斯 这次跑步能表达吗?
mahesh

嗨@mahesh,您绝对可以使用express。运行http服务器和p2p通信(例如,使用websocket)是使用nodejs-mobile的非常常见的方案。如果你想用科尔多瓦,你可能会发现这个示例应用程序,因为它的用途非常有用表示: github.com/JaneaSystems/nodejs-mobile-samples/blob/...
亚历克西斯Campailla大街


1

如何为Android构建NodeJS 的教程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服务在后端运行Node js服务器。


.....修改代码以将Nginx替换为NodeJS ....如果您演示了如何执行此操作的示例,效果会更好。
Edijae Crusar

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.