กำลังเรียกใช้ Node.js บน Android


96

ดังนั้นฉันรู้ว่าเรื่องนี้ถูกตั้งคำถามค่อนข้างมาก เพื่อให้ถูกต้องเช่นในคำถามเหล่านี้:

  1. เรียกใช้เซิร์ฟเวอร์ NodeJs ใน Android
  2. จะรันโปรเจ็กต์ node.js บน Android ได้อย่างไร
    และ
  3. NodeJS บน IOS / Android

ทุกตัวเลือกที่นำเสนอมีปัญหาแม้ว่า:

  • ฉันต้องการเรียกใช้บนอุปกรณ์ปกติของฉันดังนั้นฉันจึงต้องการหลีกเลี่ยงการติดตั้งระบบปฏิบัติการอื่นบนอุปกรณ์ของฉัน

  • การทำงานกับ JXCore หยุดลงเมื่อเดือนที่แล้วและ (อาจเป็นผล) ฉันไม่สามารถรวบรวมได้ (ดูไม่สามารถติดตั้ง jxcore-cordova )

  • พอร์ต Android ของ NodeJs Anodeไม่ได้ใช้งานมาตั้งแต่ปี 2014 และไม่ได้รับการบำรุงรักษาเลย
  • คำตอบที่สองในเธรดที่สองที่ฉันเชื่อมโยงกล่าวถึงมีการแจกจ่ายโหนดอย่างเป็นทางการสำหรับ Android ในขณะนี้ แต่นอกเหนือจากลิงก์ไปยังเว็บไซต์เรียกดูของ dist ล่าสุดฉันไม่พบข้อมูลใด ๆ เกี่ยวกับวิธีการใช้งานจริง
  • ฉันเห็นสิ่งนี้ด้วยแต่ดูเหมือนว่าอุปกรณ์จะต้องเชื่อมต่อกับพีซี (หรือคล้ายกัน) เพื่อเรียกใช้คำสั่ง adb shell ในขณะที่ฉันต้องการทำให้เป็นแอปแยกต่างหาก

ด้วยเวลาที่ผ่านมานับตั้งแต่มีการโพสต์คำถามเหล่านี้และดูเหมือนว่า JXCore "ตัวเลือกที่ดีที่สุด" จะใช้ไม่ได้ในขณะนี้:
มีวิธีเรียกใช้แอปพลิเคชัน node.js (เซิร์ฟเวอร์ในกรณีของฉัน) บนอุปกรณ์ Android หรือไม่

หากคุณสงสัยว่าทำไมฉันถึงต้องการสิ่งนี้: ฉันสร้าง WebApp ด้วยเซิร์ฟเวอร์ Node.Js และตอนนี้ฉันต้องการเวอร์ชันที่คุณสามารถเปิดใช้งานได้จากโทรศัพท์ของคุณโดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต ซึ่งหมายความว่าเซิร์ฟเวอร์ต้องทำงานบนโทรศัพท์ Android


1
แค่ไม่สนใจคุณสนใจว่ามีใครสามารถใช้แอพนี้ได้จริงหรือคุณแค่พยายามทำให้มันใช้งานบนโทรศัพท์ สาเหตุที่ฉันเห็นว่าการตั้งค่าจำนวนมากในผู้ใช้ / ไคลเอ็นต์สิ้นสุดลงหากสามารถใช้งานได้
zgc7009

1
ฉันยอมรับโดยสิ้นเชิงว่าถ้าฉันจะใช้มันบนโทรศัพท์ความพยายามในปัจจุบันของฉันมันซับซ้อนเกินไป เซิร์ฟเวอร์ Node.JS นี้เป็น Game Web Application Server ขนาดเล็กดังนั้นทุกคนที่เล่นเกมจะต้องเข้าถึงเซิร์ฟเวอร์นั้น
MariusR

คุณจะไม่สามารถรวมเซิร์ฟเวอร์ Node.JS เข้ากับระบบ Android ได้และมีเพียงไม่กี่คนที่มีแนวโน้มทางเทคนิคมากพอที่จะติดตั้งเพื่อเล่นเกม ถ้ามันเป็นเพียงสิ่งเดียวสำหรับคุณนั่นคือสิ่งหนึ่ง แต่ถ้ามันควรจะปรับขนาดเลยฉันไม่เห็นว่ามันจะได้ผลอย่างไร มีแอพมากมายโดยเฉพาะเกมที่ไม่เพียง แต่ต้องใช้การเชื่อมต่ออินเทอร์เน็ตเท่านั้น
zgc7009

ฉันรู้ แต่แอพนี้บน Android มีไว้สำหรับฉันเท่านั้น มันจะไม่ขึ้นบน APP Store หรืออะไรเลย ฉันจะปรับใช้เซิร์ฟเวอร์กับพื้นที่เว็บไซต์สาธารณะที่โฮสต์ด้วย นั่นเป็นเหตุผลที่ฉันไม่ต้องการลบล้างจากการใช้ node.js ความตั้งใจที่จะสร้างเวอร์ชันออฟไลน์คือฉันกำลังคิดว่า "ถ้าฉันต้องการเล่นกับเพื่อน ๆ แบบออฟไลน์"
MariusR

2
ฉันคิดเกี่ยวกับเรื่องนี้เช่นกัน แต่เมื่อพิจารณาว่าเซิร์ฟเวอร์ของฉันพึ่งพาเฟรมเวิร์ก socket.io เป็นอย่างมากมันทำให้การสร้างเซิร์ฟเวอร์ใน Java ยากขึ้น นอกจากนี้ฉันมีโค้ดใน NodeJS ค่อนข้างมากและฉันไม่รู้สึกอยากเขียนซ้ำส่วนใหญ่ วิธีแก้ปัญหาโดยใช้ Termux ทำงานได้ดีมากและฉันยังคงใช้เพื่อจุดประสงค์ของฉันแม้ว่าฉันจะต้องบอกว่าฉันจะไม่ใช้มันหาก nodejs ของฉันเป็นผลิตภัณฑ์จริงฉันจะขายเพราะมันเป็นวิธีที่ไม่สะดวกสำหรับสิ่งนั้น
MariusR

คำตอบ:


95

ฉันมีช่วงเวลาที่กรามค้าง - Termuxช่วยให้คุณสามารถติดตั้ง NodeJS บนอุปกรณ์ Android ได้!

ดูเหมือนว่าจะใช้ได้กับการทดสอบความเร็ว Websocketพื้นฐานที่ฉันมีอยู่ในมือ http ที่ให้บริการโดยสามารถเข้าถึงได้ทั้งในเครื่องและบนเครือข่าย

มีโพสต์ขนาดกลางที่อธิบายขั้นตอนการติดตั้ง

โดยทั่วไป: 1. ติดตั้ง termux 2. apt ติดตั้ง nodejs 3. โหนดขึ้น!

ข้อ จำกัด อย่างหนึ่งที่ฉันพบ - ดูเหมือนว่าโฟลเดอร์ที่แชร์ไม่มีสิทธิ์ที่จำเป็นในการติดตั้งโมดูล มันอาจจะเป็นสิ่งที่อนุญาตไฟล์ พื้นที่จัดเก็บแอปส่วนตัวใช้งานได้ดี


5
สิ่งที่แปลกคือมีคำตอบอยู่แล้วที่ฉันยอมรับสำหรับคำถามนี้ซึ่งอธิบายถึงสิ่งเดียวกับที่คุณทำ แต่ดูเหมือนว่าจะถูกลบไปด้วยเหตุผลบางประการ นั่นเป็นเหตุผลที่ฉันยอมรับคำตอบของคุณเมื่อฉันเริ่มใช้ Termux ในตอนนั้นและฉันยังคงใช้มันอยู่
MariusR

6
ขอบคุณ. ฉันรู้สึกประหลาดใจกับการค้นหาว่าฉันต้องทำมากแค่ไหนก่อนที่จะพบข้อมูลอ้างอิงของ Termux เธรดนี้เป็นหนึ่งในผลลัพธ์แรกที่ฉันพบดังนั้นฉันแม้ว่าฉันจะเพิ่มที่นี่เพื่อให้ทางลัดแก่ผู้ค้นหารายต่อไป;)
Pyro

ดูเหมือนว่าจะสามารถลบคำตอบที่ได้รับการยอมรับโดยมี 11 upvotes สำหรับคำถามที่ได้รับการป้องกันอาจเป็นเพราะเป็นคำตอบ "ลิงก์เท่านั้น" ดังนั้นคำตอบนี้อาจจะถูกลบไปในบางจุด ...
jcesarmobile

2
คุณรู้หรือไม่ว่าจะอนุญาตให้เซิร์ฟเวอร์ทำงานในพื้นหลังต่อไปหากคุณออกจากแอป Termux แล้วเมื่อคุณล็อค Android ล่ะ? ขอบคุณ.
wayofthefuture

6
ฉันต้องทำการอัปเกรด $ apt $ apt ก่อนที่จะพบ nodejs ที่ฉันใช้บน HUAWEI Note 6
M.Hefny

16

Dory - node.js

แอปพลิเคชั่นใหม่ที่ยอดเยี่ยม
ไม่จำเป็นต้องรูทโทรศัพท์ของคุณและคุณสามารถเรียกใช้ไฟล์ js ของคุณได้จากทุกที่

  • รันไทม์ node.js (รัน ES2015 / ES6, ES2016 javascript และ node.js APIs ใน Android)
  • เอกสาร API และรหัสทันทีเรียกใช้จาก doc
  • โปรแกรมแก้ไขโค้ดเน้นไวยากรณ์
  • รองรับ npm
  • ลินุกซ์เทอร์มินัล (toybox 0.7.4) node.js REPL และคำสั่ง npm ในเชลล์ (เพิ่มตัวเลือก '--no-bin-links' หากคุณรัน npm ใน / sdcard)
  • StartOnBoot / LiveReload
  • เนทีฟ node.js ไบนารีและ npm รวมอยู่ด้วย ไม่จำเป็นต้องออนไลน์

อัปเดตคำสั่งไปยังโหนด js 8 (async รอ)

  1. ดาวน์โหลดไฟล์ zip อาร์ม node.js v8.3.0 และเปิดเครื่องรูด

  2. คัดลอก 'โหนด' ไปยัง sdcard ของ Android (/ 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 / โหนด

  7. (chmod a + x โหนด

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


2
ดูเหมือนว่าจะมีปัญหาบางอย่างในการใช้งานการติดตั้ง npm บ่นว่าไม่มีสิทธิ์เข้าถึง "/" และการเข้าถึง FS แบบอ่านอย่างเดียว
Michael

ติดต่อพวกเขา: (tempage.io@gmail.com)
Sedric Heidarizarei

ดูเหมือนว่าจะรองรับ Node เวอร์ชันเก่ามากเท่านั้น ประมาณ 6.x ในขณะที่กระแสที่ฉันโพสต์นี้คือ 10.x / 11.x
hippietrail

การอัปเดตทำได้ง่ายขึ้นมากตอนนี้: <pre> อัพเกรด node.js: เมนู 'ดาวน์โหลดไฟล์' -> ตรวจสอบ 'appfiles' -> ตรวจสอบ 'ปฏิบัติการ' แขนv6.12.3 : 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=th </pre>
Kay Marquardt

การเรียกใช้แอป Node โดยเฉลี่ยบนโทรศัพท์ของคุณดูเหมือนจะเป็นวิธีที่ดีในการเติมที่เก็บข้อมูลภายใน :) แต่บอกว่าฉันมีแอปเซิร์ฟเวอร์ขนาดเล็กที่ไม่ต้องใช้. / node_modules dir และทำงานจาก. / dist ผ่านnps serve dist. มันจะทำงาน (ตามทฤษฎี) และถ้าเป็นเช่นนั้นฉันจะนำมันไปยังโทรศัพท์ในตำแหน่งที่เหมาะสมได้อย่างไร
RJVB

15

คุณสามารถใช้Node.js สำหรับ Apps

ทำงานบนอุปกรณ์ Android และเครื่องจำลองพร้อมไบนารีที่สร้างไว้ล่วงหน้าสำหรับ armeabi-v7a, x86, arm64-v8a, x86_64 นอกจากนี้ยังใช้งานได้บน iOS แม้ว่าจะอยู่นอกขอบเขตของคำถามนี้ก็ตาม

เช่นเดียวกับ JXcore มันถูกใช้เพื่อโฮสต์เอ็นจิ้น Node.js ในกระบวนการเดียวกับแอพในเธรดเฉพาะ แตกต่างจาก JXcore โดยพื้นฐานแล้วเป็น Node.js ที่บริสุทธิ์สร้างขึ้นเป็นไลบรารีโดยมีการแก้ไขความสามารถในการพกพาเล็กน้อยเพื่อทำงานบน Android ซึ่งหมายความว่าการอัปเดตโปรเจ็กต์ให้ทันสมัยอยู่เสมอด้วย mainline Node.js

นอกจากนี้ยังมีปลั๊กอินสำหรับCordovaและReact Native ปลั๊กอินจัดเตรียมเลเยอร์การสื่อสารระหว่างฝั่ง JavaScript ของเฟรมเวิร์กเหล่านั้นและฝั่ง Node.js นอกจากนี้ยังทำให้การพัฒนาง่ายขึ้นด้วยการดูแลบางสิ่งโดยอัตโนมัติเช่นโมดูลบรรจุภัณฑ์และโมดูลเนทีฟที่รวบรวมข้ามเวลาสร้าง

การเปิดเผยข้อมูลทั้งหมด: ฉันทำงานให้กับ บริษัท ที่พัฒนา Node.js สำหรับ Mobile Apps


ขอบคุณทำงานได้ดีมาก! ตอบสนองความต้องการของฉันอย่างเต็มที่ด้วยnpmการรองรับไฟล์หลายไฟล์ (ไม่ได้ใช้ แต่เป็นการดีที่รู้ว่ามีให้ใช้งาน) เกือบจะสามารถcanvasทำงานได้ แต่ฉันจะต้องทำตามขั้นตอนพิเศษบางอย่างใน Linux (ปัจจุบันใช้ Windows) และพบไลบรารีทดแทนที่ไม่ต้องการใช้
GuiRitter

สวัสดีอเล็กซิส นี่จะวิ่งด่วน?
mahesh

สวัสดี @mahesh คุณสามารถใช้ express ได้แน่นอน การรันเซิร์ฟเวอร์ http และการสื่อสารแบบ p2p (เช่นกับเว็บซ็อกเก็ต) เป็นสถานการณ์ที่พบบ่อยมากสำหรับการใช้ nodejs-mobile ในกรณีที่คุณต้องการใช้ Cordova คุณอาจพบว่าแอปตัวอย่างนี้มีประโยชน์เนื่องจากใช้ express: github.com/JaneaSystems/nodejs-mobile-samples/blob/…
Alexis Campailla

10

J2V8 เป็นทางออกที่ดีที่สุดสำหรับปัญหาของคุณ เรียกใช้แอปพลิเคชัน Nodejs บน jvm (java และ android)

J2V8 คือ Java Bindings สำหรับ V8 แต่การรวม Node.js พร้อมใช้งานใน J2V8 (เวอร์ชัน 4.4.0)

Github: https://github.com/eclipsesource/J2V8

ตัวอย่าง: http://eclipsesource.com/blogs/2016/07/20/running-node-js-on-the-jvm/


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

นี่คือตัวอย่าง: github.com/dna2github/dna2mtgol/tree/master/nodeBase/platform
Doz Parp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.