Without this patch functions such as process.getgroups are not built on Android, which breaks things such as npm/node_modules/which/which.js. diff -u -r ../node-v9.1.0/src/node.cc ./src/node.cc --- ../node-v9.1.0/src/node.cc 2017-11-07 16:08:24.000000000 +0100 +++ ./src/node.cc 2017-11-11 19:19:05.080439199 +0100 @@ -108,7 +108,7 @@ #include // setuid, getuid #endif -#if defined(__POSIX__) && !defined(__ANDROID__) && !defined(__CloudABI__) +#if defined(__POSIX__) && !defined(__CloudABI__) #include // getpwnam() #include // getgrnam() #endif @@ -2122,7 +2122,7 @@ } -#if defined(__POSIX__) && !defined(__ANDROID__) && !defined(__CloudABI__) +#if defined(__POSIX__) && !defined(__CloudABI__) static const uid_t uid_not_found = static_cast(-1); static const gid_t gid_not_found = static_cast(-1); @@ -2441,7 +2441,7 @@ } } -#endif // __POSIX__ && !defined(__ANDROID__) && !defined(__CloudABI__) +#endif // __POSIX__ && !defined(__CloudABI__) static void WaitForInspectorDisconnect(Environment* env) { @@ -3711,7 +3711,7 @@ env->SetMethod(process, "umask", Umask); -#if defined(__POSIX__) && !defined(__ANDROID__) && !defined(__CloudABI__) +#if defined(__POSIX__) && !defined(__CloudABI__) env->SetMethod(process, "getuid", GetUid); env->SetMethod(process, "geteuid", GetEUid); env->SetMethod(process, "setuid", SetUid); @@ -3725,7 +3725,7 @@ env->SetMethod(process, "getgroups", GetGroups); env->SetMethod(process, "setgroups", SetGroups); env->SetMethod(process, "initgroups", InitGroups); -#endif // __POSIX__ && !defined(__ANDROID__) && !defined(__CloudABI__) +#endif // __POSIX__ && !defined(__CloudABI__) env->SetMethod(process, "_kill", Kill);