Giter VIP home page Giter VIP logo

node-android-lib's Introduction

Node.js Android lib

This repo lets you build libnode.so for Android (arm64).

You only need this if you want to build an Android app that runs a true native node via the Java Native Interface, and you know what you're doing.

If you just want to use node on your Android, get it on Termux. If you just want to run some JS, use WebView.

Instructions

  1. Get an Android arm64 device. I use a Pixel.
  2. Get Termux.
  3. Get a shell into Termux.
  4. git clone this repo
  5. cd into this repo
  6. Run:
./configure --shared
LDFLAGS="-llog" make -j2 # this will take like an hour
file ./out/Release/lib.target/libnode.so.59 # this is your output library; copy it somewhere

g++ node.cpp -std=c++14 -L./out/Release/lib.target -l:libnode.so.59 -I. -I./deps/v8/include -I./deps/uv/include -o ./out/Release/node.so # build node binary stub
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$(pwd)/out/Release/obj.target" ./out/Release/node.so # start node

patchelf --replace-needed libnode.so.59 libnode.so ./out/Release/node.so # need this if libnode soname is changed
readelf -d ./out/Release/node.so # list soname dependencies

Mostly this repo has some light hacks that made the node build compatible with the Android native toolchain.

node-android-lib's People

Contributors

addaleax avatar apapirovski avatar bnoordhuis avatar bridgear avatar cjihrig avatar danbev avatar evanlucas avatar felixge avatar fishrock123 avatar indutny avatar isaacs avatar jasnell avatar joyeecheung avatar koichik avatar mscdex avatar mylesborins avatar ofrobots avatar piscisaureus avatar rvagg avatar ry avatar sam-github avatar shigeki avatar targos avatar thefourtheye avatar timothygu avatar tjfontaine avatar tootallnate avatar trevnorris avatar trott avatar vsemozhetbyt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

node-android-lib's Issues

Rebase on top of Node 10

We need to rebase this library on top of the latest node. We should make sure to do it off of a known tag, not some random master.

This seems a good candidate.

`unsupported relocation' Error when Linking

I cloned this repo and followed the instruction in README but got an error as shown below.

/data/data/com.termux/files/usr/bin/ld: /data/data/com.termux/files/home/src/node-android-lib/out/Release/obj.target/openssl/deps/openssl/asm/arm64-linux64-gas/sha/sha1-armv8.o: relocation R_AARCH64_PREL64 against symbol `OPENSSL_armcap_P' which may bind externally can not be used when making a shared object; recompile with -fPIC
/data/data/com.termux/files/home/src/node-android-lib/out/Release/obj.target/openssl/deps/openssl/asm/arm64-linux64-gas/sha/sha1-armv8.o: In function `sha1_block_armv8':
(.text+0x1240): dangerous relocation: unsupported relocation

Previously I download the source code of Node.js v10.6.0 and tried to make it on my android device with Termux, but failed in linking with another error undefined reference to \uv__xxx', where xxx` represents some symbol I forgot. Hope this would help :P.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.