nwjs / nw.js

Call all Node.js modules directly from DOM/WebWorker and enable a new way of writing applications with all Web technologies.
https://nwjs.io
MIT License
40.14k stars 3.88k forks source link

Add Android Support [$50] #94

Open subtleGradient opened 11 years ago

subtleGradient commented 11 years ago

Yes.

There is a $50 open bounty on this issue. Add to the bounty at Bountysource.

subtleGradient commented 11 years ago

http://code.google.com/p/chromium/wiki/AndroidBuildInstructions

https://github.com/paddybyers/anode

Epicness, this'd haz it

zcbenz commented 11 years ago

It's possible to provide an Android port of node-webkit, but I don't have plan for that in near future, supporting all three major desktop platforms has already taken all of my time.

sequoiar commented 11 years ago

In case Chrome need V8 Android bridge, it should be done there.

at least three things to do:

  1. porting Chrome's V8 to node.js.
  2. cross compile node.js with Android NDK
  3. poring what else in content-shell to Android
donaldpipowitch commented 11 years ago

If it's technically possible that would be awesome. Could game developers even use WebGL on Android with this way?

zcbenz commented 11 years ago

Not sure, I'm not familiar with Chrome on Android.

donaldpipowitch commented 11 years ago

Hmm... nope. The current version of Android for Chrome doesn't support WebGL :(

rogerwang commented 11 years ago

@donaldpipowitch , I'm sure it will get better :)

allencblee commented 11 years ago

@subtleGradient, why not use Phonegap?

donaldpipowitch commented 11 years ago

PhoneGap neither uses V8 nor Node. It just uses the native WebView and adds some API bridges.

donaldpipowitch commented 11 years ago

FIY: Great news. The recent Chrome for Android Beta features WebGL hidden behind a flag: http://blog.tojicode.com/2013/01/get-webgl-working-on-android-chrome-beta.html?m=1

It would be just so sweet to get node-webkit running on an OUYA :)

kevsmt commented 11 years ago

This is epic if possible :)

zhizhangchen commented 11 years ago

Even if it's technically possible to enable node APIs on Andorid, will Google allow such an application being installed? Basically it can access all the resources in the device and user will have no way to control it.

donaldpipowitch commented 11 years ago

I think you would have to use the regular Android way and declare a AndroidManifest.xml to set permissions.

Mithgol commented 11 years ago

Meanwhile, https://github.com/paddybyers/node/wiki/Building-v0.11-for-Android

Mithgol commented 10 years ago

Meanwhile, the joyent/node#5514 patch has been merged into the core of Node.js.

smolleyes commented 10 years ago

hi

what s up with node-webkit on android ?

thx

yapcheahshen commented 10 years ago

FYI, here is an attempt to provide a pure javascript development environment for native Apps, by using V8 on Android and spider-monkey on iOS. http://sourceforge.net/projects/yaui/

albi90 commented 10 years ago

Any progress on this?

tarwin commented 10 years ago

If it would be possible to get it working, I may be interested in paying someone (a grand or two?) to get this going. Requirements would be that it has WebGL available (ie latest Chrome).

donaldpipowitch commented 10 years ago

FYI: With the new JS-to-ObjC-Bridge in iOS7 it should be possible to polyfill Node on iOS, so generally it should be possible to do node-webkit on iOS7, too?

albi90 commented 10 years ago

its definitely possible, i have just converted one of my projects from node-webkit to android using the chromium content shell for android from https://github.com/davisford/android-chromium-view doesent have nodejs but the JS bridge works so i was able to recreate the required nodejs functions in java and pass the information back over the bridge.

jmorvan commented 10 years ago

It would probably need a native app shell and then define a JNI to map webview's js calls to node. (in theory!)

albi90 commented 10 years ago

You could probably modify webinos, to emulate node-webkit from what I have read its the chromium content shell smashed together with anode.

https://github.com/webinos/webinos-android

Thanks Albi90

raitucarp commented 10 years ago

bump

ghost commented 10 years ago

Very interested in html5 nodejs (node-webkit) for my new android tablet

kenchris commented 10 years ago

If what you care about is a full-performance Chromium fullscreen window on Android showing your web app, well then I suggest that you look into using Crosswalk (http://www.crosswalk-project.org).

If you really depend on the node.js support, well then you can stop reading here, at least for now :-)

There is even an APK generator here: https://github.com/crosswalk-project/crosswalk-apk-generator.

So what is Crosswalk and does it make sense for you? (some extracts from my upcoming article for html5hub.com)

Crosswalk brings the full performance of Blink/Chromium to web applications on all Android devices from version 4.0 onwards, as well as some additional standards-based web features requested by app developers, such as orientation lock, raw sockets, WebRTC and WebAudio and even WebGL :-)

I guess some readers know that the latest Android (4.4, KitKat) now brings a WebView based on Chrome and Blink, so why not just use that?

Well, the new WebView is only available to people running the latest major version of Android and furthermore, the performance characteristics and features differ somewhat from Chrome, depending on the Android API level used by the embedding application.

This is because the new WebView in KitKat has to match the behavior of the previous WebView to avoid breaking existing applications, which means supporting legacy features, workarounds etc. In some cases this negatively affects layout and performance. In particular canvas performance seems to be hurt and features such as WebGL are left out for now.

As Crosswalk doesn't need this compatibility, it can follow a design very similar to that of the Chrome browser, and it is in fact built on top of Chromium components such as the content module and the Blink engine which makes it blazingly fast and very standards compliant.

ghost commented 10 years ago

What I would like to do is: Do all my development of Android app's on the tablet (Android OS). For me this has two advantages: 1) I don't have to carry around a 4lb laptop. 2) I don't have to run an android simulator and then reconfirm its actual operation in the Android environment.
Then there is the added time of keeping the simulator in sync with the Android OS. And the publishing and transfer between the two platforms. Do I really need all of this complication?

albi90 commented 10 years ago

Hi Guys

If you want i have the latest chromium content shell refracted into an android studio project, i cant take any credit for it, its based on Davis Fords github project (now private), but updated.

just add a javascript bridge to communicate between your java and javascript.

Thanks Albi90

CoryGH commented 10 years ago

Would be great to see node-webkit support for Android and iOS, it would definitely expand node.js to everywhere (already have it running as a pseudo-operating system for embedded devices by killing the window manager on a Raspberry PI, replacing X with a single-window instance of Midori and setting node.js to run automatically, same can be done with a node-webkit application but it makes it a bit harder to update than separating the node.js and web browser instances in that case).

ghost commented 10 years ago

I am with you on this. Want to develop browser based application for local android platform. Working on it now!

On Thu, Apr 17, 2014 at 1:56 PM, CoryGH notifications@github.com wrote:

Would be great to see node-webkit support for Android and iOS, it would definitely expand node.js to everywhere (already have it running as a pseudo-operating system for embedded devices by killing the window manager on a Raspberry PI, replacing X with a single-window instance of Midori and setting node.js to run automatically, same can be done with a node-webkit application but it makes it a bit harder to update than separating the node.js and web browser instances in that case).

— Reply to this email directly or view it on GitHubhttps://github.com/rogerwang/node-webkit/issues/94#issuecomment-40749586 .

albi90 commented 10 years ago

Hi guys

if your looking to hax up chromium to create a native web app you can use my latest build of the chromium content shell, its the latest LKGR build 265217 so it should be stable.

just download the source and open it in android studio, this is just the raw content shell which doesn't support loading url's from the assets dir so you will need to zip your project and put some code in to extract it to external storage and set the startup url to file:///extracted_dir well thats what i do if you find a better way let me know.

Have fun

oh yeah the source url is http://squareboxdesign.net/nw/android-chromium-lkgr-rev265217.zip

albi90 commented 10 years ago

Woops looks like i didn't re-base to the LKGR correctly the above build is a bit buggy, i will update it tonight, i will also post an example with a basic page utilizing the javascript bridge as it can be hard to work out.

albi90 commented 10 years ago

Ok so i have updated the content shell to the latest LKGR 26609 source for the pure content shell is below: http://squareboxdesign.net/nw/android-chromium-lkgr-rev266009.zip

if you want a basic app example, see below node-webkit build (no node.js sorry) this app will extract the node-webkit\chromium\nw\src\main\assets\www content onto the external storage dir and load index.html. the current page is just a simple app that shows the total memory available, the used memory and lists any files in its external storage dir. http://squareboxdesign.net/nw/node-webkit-lkgr-rev266009.zip

it should give you a good example of how to use the JavascriptInterface on the content shell.

FYI my android development skills are not the best so i take no responsibility for any issues.

Feel free to use this code how you like, its 99% chromium source.

Thanks albi90

hadim commented 10 years ago

Any chance to get node-webkit working on android in future ?

Mithgol commented 10 years ago

@hadim The current situation is the following:

hadim commented 10 years ago

Ok at least it's clear :-)

Thank you dude !

No9 commented 10 years ago

This might be useful :) Node on android

https://gist.github.com/modeswitch/114c9bd55d800df242a2

albi90 commented 10 years ago

@No9 interesting gist, if we can simply compile node for android then it shouldn't be to hard to add it to the android content shell, if @zcbenz could provide an in depth breakdown on the changes made to make node work in the content shell at the DOM level i would give it a go, i believe the content shell lib between android and linux shares alot of code.

PedroMCostaAndrade commented 9 years ago

bump

PedroMCostaAndrade commented 9 years ago

@rogerwang please say something about this.. This would be the better thing that could happen to node-webkit... node.js and node-webkit are great and thanks to them, programs like PopcornTime were created!! thanks

rogerwang commented 9 years ago

@PedroMCostaAndrade it requires efforts and the support I get so far is not able to cope with this. Thanks

spirodonfl commented 9 years ago

@rogerwang: When you say "the support I get so far", do you mean fellow developers helping with the code or financial support?

sarciszewski commented 9 years ago

I second @spirodonfl's question and will try to find time to help out if you need code support :+1:

PedroMCostaAndrade commented 9 years ago

Bump @rogerwang

sashahilton00 commented 9 years ago

bump

jtremback commented 9 years ago

I don't have the expertise to help with the code, but this would extremely useful for me and I'm willing to pitch in financially (modestly) for someone to do it. Crowdfunding?

davidworkman9 commented 9 years ago

I don't know what the exact technical details but this should be doable on the chromium side, proven by the crosswalk project and porting node to android seems to be in progress.

Mithgol commented 9 years ago

@davidworkman9 It seems to me that the http://instantwebp2p.github.io/node-android/ project is porting Node.js not only to Android, but also from JavaScript to Java, and its intention is to provide Node-like APIs for Java applications on Android. (And it is therefore useless for the goal of launching the code of node-webkit-based applications written in JavaScript.)

davidworkman9 commented 9 years ago

@Mithgol oh sorry, I guess you're right. I didn't look into it much, was in the node weekly newsletter this morning right above the notification for this in my inbox and thought it was quite the coincidence.

albi90 commented 9 years ago

@Mithgol if we have the API in Java you could simply use the content shell with the js bridge, not as nice as having node tied directly into the content shell at the DOM level but would work.