sjitech / build-nodejs-for-android

Build nodejs for android(arm,arm64,x86,x64,mipsel) perfectly and provide prebuilt binaries, and a docker image as workbench.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于node for android 的问题

shuaqq2004 opened this issue · comments

请问,在安卓上运行node,是不是必须要root?

commented

不需要。

能否留一个QQ。
我们这边的APK 里面 需要内置一个node, node的启动js是官方demo js, 就开启了一个4000端口的http server。
但是无法访问, 我们不清楚是否启动起了。
protected static int execRootCmdSilent(String paramString) {
try {
Process localProcess = Runtime.getRuntime().exec("sh");
Object localObject = localProcess.getOutputStream();
DataOutputStream localDataOutputStream = new DataOutputStream((OutputStream) localObject);
String str = String.valueOf(paramString);
localObject = str + "\n";
localDataOutputStream.writeBytes((String) localObject);
localDataOutputStream.flush();
localDataOutputStream.writeBytes("exit\n");
localDataOutputStream.flush();
localProcess.waitFor();
return localProcess.exitValue();
} catch (Exception localException) {
localException.printStackTrace();
}
return -1;
}
paramString 就是路径 /mnt/internal_sd/node node.js

commented

你好。我没有QQ。你这个问题.....还是耐心找找别人的sample理解一下,Process的创建不需要你这么麻烦,不需要经过sh折腾自己,当然,非要这么搞也行,但是你得改掉里面的错误写法,例如那什么localObject是个Stream你居然把它强行变成string和OutputStream,乱套了。

另外。

1。你要确保node安装正确,能够按照我在ReadMe.md里那样测试能够通过。

2。你运行了你的app后的确能够看到你的node进程吗?用ps看看。

3。用netstat -an看看你的端口是否被listen。 顺便看看地址是IPv6的::还是4的0.0.0.0。有的Android机器,通过localhost访问时是按照IPv6的::1来访问的,而不是127.0.0.1。

目前通过您的
adb push /home/devuser/nodejs-6.5.0-arm/bin/node /data/local/tmp/
adb push /home/devuser/nodejs-6.5.0-arm/lib /data/local/tmp/
adb shell chmod -R 755 /data/local/tmp/node /data/local/tmp/lib

我们已经按照以上的操作,成功在shell上启动了node,运行了demo。
接下来我们这边找一下怎样把node集成进apk。以前没这方面的经验。
谢谢。

commented

好,祝你好运。