node-on-android

Make Node.JS apps for Android

  • 所有者: node-on-mobile/node-on-android
  • 平台:
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Node on Android

Make Node.js apps for Android (Currently only supports ARM64)

Installing

First install the command line tool from npm

npm install -g node-on-android

Or get it from git:

git clone https://github.com/node-on-mobile/node-on-android
cd cli/
npm i

You also need to fetch the Android SDK if you haven't (See "Get just the command line tools" here)
and unpack them somewhere.

Then install apktool from brew or similar

brew install apktool

That's it! You are now ready to write Node.js apps for Android.

Building an app

Node on android works by running your Node.js inside the android app using a shared library.
It then bundles a WebView that hosts your UI code. All UI is just classic html/css/js.

In the node app you can require node-on-android to get access to the WebView.
You can use this to load an html page in the WebView

// in the node app
var android = require('node-on-android')

// will load localhost:1000 in the webview
android.loadUrl('http://localhost:10000')

You can call loadUrl as many times as you want. It'll just change the WebView address.

Here is an example app

// save me as my-app/index.js
var http = require('http')
var android = require('node-on-android')

var server = http.createServer(function (req, res) {
  res.end(`
    <html>
    <body>
      <h1>Welcome to Node.js hacking on Android</h1>
    </body>
    </html>
  `)
})

server.listen(0, function () {
  android.loadUrl(`http://localhost:${server.address().port}`)
})

To bundle up the Node.js app into an apk file use the command line tool

node-on-android ./my-app -o my-app.apk -b ./path/to/android/build/tools

If you installed Android Studio on Mac the build tools are usually installed in a path similar to ~/Library/Android/sdk/build-tools/26.0.1/.

After the above succeds you should be able to install my-app.apk on your Android phone
and run the Node.js app.

Happy mobile hacking!

Instructions for GNU/Linux

To install apktool go to the apktool website and follow the installation guide for linux. Here it is in script form (but make sure you get the latest versions):

cd /tmp
wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.2.4.jar
mv apktool_2.2.4.jar apktool.jar
chmod 755 apktool apktool.jar
sudo mv apktool apktool.jar /usr/local/bin/

In order to get the appsigner and zipalign commands you'll need to download the Android SDK tools and use the sdkmanager commmand.

On GNU/Linux you can download the sdk-tools package from the android website, e.g. sdk-tools-linux-3859397.zip and extract it to e.g. /opt/android-sdk-tools

Then to install the required appsigner and zipalign tools first use the sdkmanager command to list available packages:

/opt/android-sdk-tools/bin/sdkmanager --list

Find the latest build-tools version listed and install it with e.g:

/opt/android-sdk-tools/bin/sdkmanager --sdk_root=/opt/android-sdk-tools 'build-tools;26.0.1'

Make sure you run the previous command as a user that has write access to your sdk directory (in this case /opt/android-sdk-tools/bin.

Now you should have zipalign and apksigner available in:

/opt/android-sdk-tools/build-tools/26.0.1

You can use this path as your -b argument for the node-on-android command but you should really put zipalign and apksigner in your path like so:

cd /usr/local/bin
sudo ln -s /opt/android-sdk-tools/build-tools/26.0.1/zipalign
sudo ln -s /opt/android-sdk-tools/build-tools/26.0.1/apksigner

Example

There is an example app ready to try in the example/ directory.

First ensure that the dependencies are installed:

cd cli/
npm i
cd ..

You will also need to change the -b argument in build command in example/package.json if you don't have symlinks to zipalign and apksigner in /usr/local/bin.

cd example/
npm run build

To send it to your phone, enable adb debug mode on your android device, connect it over USB and run:

adb install build/example.apk

The app will show up in your app list as "Node On Android". You can also launch it using:

adb shell
am start -n com.mafintosh.nodeonandroid/com.mafintosh.nodeonandroid.MainActivity

License

MIT

主要指標

概覽
名稱與所有者node-on-mobile/node-on-android
主編程語言C
編程語言CMake (語言數: 6)
平台
許可證MIT License
所有者活动
創建於2017-07-28 21:37:19
推送於2019-01-04 08:26:20
最后一次提交2019-01-04 09:26:19
發布數1
最新版本名稱pre-alpha (發布於 )
第一版名稱pre-alpha (發布於 )
用户参与
星數1.1k
關注者數54
派生數88
提交數18
已啟用問題?
問題數24
打開的問題數21
拉請求數3
打開的拉請求數4
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?