Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error: dlopen failed: cannot locate symbol "_ZN2v814ObjectTemplate21SetInternalFieldCountEi" referenced by leveldown.node #159

Open
algorist-mechanism opened this issue Jan 9, 2019 · 10 comments

Comments

@algorist-mechanism
Copy link

algorist-mechanism commented Jan 9, 2019

  • Project: nodejs-mobile-samples/android/native-gradle-node-folder
  • Version: nodejs-mobile v0.1.18
  • Mobile device: Xiaomi Mi Pad 4
  • Mobile OS and version: Android 8.1.0 API 27
  • Development Node.js: node -v
    v8.6.0
  • Development platform: uname -a
    Linux ubuntu-pumpkin 4.4.0-141-generic forms ls #167-Ubuntu SMP Wed Dec 5 10:40:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Tried to use leveldown as a native module in android native-gradle-node-folder sample project.

Steps:

nvm use 8.6.0

git clone https://github.com/janeasystems/nodejs-mobile.git

cd nodejs-mobile

./android-configure <.../ndk-bundle/> arm64

NDK toolchain already exists. Replace it? [y/N]y
HOST_OS=linux
HOST_EXE=
HOST_ARCH=x86_64
HOST_TAG=linux-x86_64
HOST_NUM_CPUS=4
BUILD_NUM_CPUS=8
Toolchain installed to /home/user/git/janeasystems/nodejs-mobile/android-toolchain.
creating ./icu_config.gypi
{ 'target_defaults': { 'cflags': [],
'default_configuration': 'Release',
'defines': [],
'include_dirs': [],
'libraries': []},
'variables': { 'OS': 'android',
'asan': 0,
'coverage': 'false',
'debug_devtools': 'node',
'debug_http2': 'false',
'debug_nghttp2': 'false',
'force_dynamic_crt': 1,
'host_arch': 'arm64',
'icu_small': 'false',
'llvm_version': '7.0',
'node_byteorder': 'little',
'node_enable_d8': 'false',
'node_enable_v8_vtunejit': 'false',
'node_engine': 'v8',
'node_install_npm': 'true',
'node_module_version': 57,
'node_no_browser_globals': 'false',
'node_prefix': '/usr/local',
'node_release_urlbase': '',
'node_shared': 'true',
'node_shared_cares': 'false',
'node_shared_http_parser': 'false',
'node_shared_libuv': 'false',
'node_shared_openssl': 'false',
'node_shared_zlib': 'false',
'node_tag': '',
'node_use_bundled_v8': 'true',
'node_use_dtrace': 'false',
'node_use_etw': 'false',
'node_use_lttng': 'false',
'node_use_openssl': 'true',
'node_use_perfctr': 'false',
'node_use_v8_platform': 'true',
'node_without_node_options': 'false',
'openssl_fips': '',
'openssl_no_asm': 1,
'shlib_suffix': 'so',
'target_arch': 'arm64',
'v8_enable_gdbjit': 0,
'v8_enable_i18n_support': 0,
'v8_enable_inspector': 0,
'v8_no_strict_aliasing': 1,
'v8_optimized_debug': 0,
'v8_promise_internal_field_count': 1,
'v8_random_seed': 0,
'v8_trace_maps': 0,
'v8_use_snapshot': 'false',
'want_separate_host_toolset': 0}}
creating ./config.gypi
creating ./config.mk

npm config set arch=arm64

git clone https://github.com/janeasystems/nodejs-mobile-samples.git

download https://github.com/janeasystems/nodejs-mobile/releases/download/nodejs-mobile-v0.1.8/nodejs-mobile-v0.1.8-android.zip
extract and copy bin & include directories to ..git/janeasystems/nodejs-mobile-samples/android/native-gradle-node-folder/app/libnode

cd nodejs-mobile-samples/android/native-gradle-node-folder/app/src/main/assets/nodejs-project

create main.js with following:

var PouchDB = require('pouchdb');
var express = require('express');
var app = express();

app.use('/db', require('express-pouchdb')(PouchDB));

app.listen(3000);

create package.json with following:
{
"name": "test-app",
"version": "1",
"description": "node pouchdb",
"main": "main.js",
"dependencies": {
"express": "^4.16.3",
"express-pouchdb": "^4.1.0",
"nan": "^2.11.0",
"node-gyp": "^3.8.0",
"pouchdb": ">=7.0.0"
}
}

npm install --arch=arm64

pouchdb uses incorrect level and leveldown versions (corrected in 7.0.0-prerelease which isn't published to npm yet.)
cd node_modules/pouchdb

change in package.json
"dependencies": {
"level": "3.0.2", to "level": "4.0.0",
"leveldown": "3.0.0", to "leveldown": "4.0.1"
}

cd ../..
npm rebuild --arch=arm64

import janeasystems/nodejs-mobile-samples/android/native-gradle-node-folder as gradle project

build and debug on android 64 bit device
Note: app/build.gradle has following:
externalNativeBuild {
cmake {
cppFlags ""
arguments "-DANDROID_STL=c++_shared"
}
}

get the following error which looks like a missing c++_shared .so

2019-01-09 11:57:36.993 8137-8255/com.yourorg.sample E/NODEJS-MOBILE: /data/data/com.yourorg.sample/files/nodejs-project/node_modules/pouchdb/node_modules/bindings/bindings.js:91
throw e
^

Error: dlopen failed: cannot locate symbol "_ZN2v814ObjectTemplate21SetInternalFieldCountEi" referenced by "/data/data/com.yourorg.sample/files/nodejs-project/node_modules/pouchdb/node_modules/leveldown/build/Release/leveldown.node"...
    at Object.Module._extensions..node (module.js:653:18)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at bindings (/data/data/com.yourorg.sample/files/nodejs-project/node_modules/pouchdb/node_modules/bindings/bindings.js:84:48)
    at Object.<anonymous> (/data/data/com.yourorg.sample/files/nodejs-project/node_modules/pouchdb/node_modules/leveldown/leveldown.js:3:36)
    at Module._compile (module.js:624:30)
    at Object.Module._extensions..js (module.js:635:10)
@algorist-mechanism
Copy link
Author

It appears, based on https://code.janeasystems.com/nodejs-mobile/faq#are-nodejs-native-modules-supported and #121 native modules are only supported using nodejs-mobile-cordova and nodejs-mobile-native-react projects. I will try using cordova.

@algorist-mechanism
Copy link
Author

algorist-mechanism commented Jan 12, 2019

Install cordova 7 using
cordova using npm install corodova@7 -g
then followed the steps given in https://github.com/janeasystems/nodejs-mobile-samples/tree/master/cordova/UseNativeModules

This following steps fail:
cordova run android

ANDROID_HOME=/home/user/development/android-sdk-linux
JAVA_HOME=/usr/lib/jvm/java-8-oracle
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :wrapper

BUILD SUCCESSFUL in 6s
1 actionable task: 1 executed
Subproject Path: CordovaLib
Starting a Gradle Daemon (subsequent builds will be faster)
The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.
	at build_61h4m30v1zeq015ppuchvi8dy.run(/home/user/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/platforms/android/build.gradle:142)
Support for CMake 3.7 and higher is a preview feature. To report a bug, see https://developer.android.com/studio/report-bugs.html

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'android'.
> No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 11s
Error: /home/user/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/platforms/android/gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'android'.
> No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 11s

Later versions of gradle do not try to build mips version based on google/filament#15 (comment)

To fix I updated the build tools gradle version to
classpath 'com.android.tools.build:gradle:3.2.1'
and buildToolsVersion "28.0.3"
and gradle version 4.1 to 4.9
task wrapper(type: Wrapper) {
gradleVersion = '4.9.0'
}
and
updated cordova/UseNativeModules/platforms/android/gradle/wrapper/gradle-wrapper.properties and cordova/UseNativeModules/node_modules/cordova-android/framework/gradle/wrapper/gradle-wrapper.properties to use
distributionUrl=https://services.gradle.org/distributions/gradle-4.9-all.zip

New error is that there is an old version of gradle, but the gradle distribution urls were edited. What can overwrite these and how do I update them? Updating the wrapper.properties again seems to work.

cordova run android

ANDROID_HOME=/home/user/development/android-sdk-linux
JAVA_HOME=/usr/lib/jvm/java-8-oracle
Subproject Path: CordovaLib

FAILURE: Build failed with an exception.

* Where:
Build file '/home/user/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/platforms/android/build.gradle' line: 20

* What went wrong:
A problem occurred evaluating root project 'android'.
> Failed to apply plugin [id 'com.android.application']
   > Minimum supported Gradle version is 4.6. Current version is 4.1. If using the gradle wrapper, try editing the distributionUrl in /home/user/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/gradle/wrapper/gradle-wrapper.properties to gradle-4.6-all.zip

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s
Error: /home/user/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/platforms/android/gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* Where:
Build file '/home/user/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/platforms/android/build.gradle' line: 20

* What went wrong:
A problem occurred evaluating root project 'android'.
> Failed to apply plugin [id 'com.android.application']
   > Minimum supported Gradle version is 4.6. Current version is 4.1. If using the gradle wrapper, try editing the distributionUrl in /home/user/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/gradle/wrapper/gradle-wrapper.properties to gradle-4.6-all.zip

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

@algorist-mechanism
Copy link
Author

Task :BuildNpmModulesarmeabi-v7a fails with npm command.
Here's the stacktrace. Not sure why it fails. npm is available in the PATH.

~/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/platforms/android$ ./gradlew assembleDebug --stacktrace

Starting a Gradle Daemon (subsequent builds will be faster)

> Configure project :CordovaLib
publishNonDefault is deprecated and has no effect anymore. All variants are now published.

> Task :MakeToolchainarmeabi-v7a
HOST_OS=linux
HOST_EXE=
HOST_ARCH=x86_64
HOST_TAG=linux-x86_64
HOST_NUM_CPUS=4
BUILD_NUM_CPUS=8
Toolchain installed to /home/user/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/platforms/android/build/standalone-toolchains/arm-linux-androideabi.

> Task :BuildNpmModulesarmeabi-v7a FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':BuildNpmModulesarmeabi-v7a'.
> A problem occurred starting process 'command 'npm''

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':BuildNpmModulesarmeabi-v7a'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
        at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
        at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:273)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:258)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:74)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:139)
        at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:39)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
        at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:24)
        at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:46)
        at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:33)
        at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:347)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:216)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:146)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:121)
        at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:77)
        at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:74)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:38)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
        at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:74)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:47)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:43)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:50)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
        at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:74)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:32)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'npm''
        at org.gradle.process.internal.DefaultExecHandle.execExceptionFor(DefaultExecHandle.java:231)
        at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:209)
        at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:355)
        at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:85)
        at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:42)
        ... 3 more
Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'npm'
        at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
        at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
        at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:67)
        ... 4 more
Caused by: java.io.IOException: Cannot run program "npm" (in directory "/home/user/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/platforms/android/build/nodejs-native-assets-temp-build/nodejs-native-assets-armeabi-v7a/nodejs-project"): error=2, No such file or directory
        at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
        ... 6 more
Caused by: java.io.IOException: error=2, No such file or directory
        ... 7 more

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/4.9/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 23s
4 actionable tasks: 4 executed

@algorist-mechanism
Copy link
Author

algorist-mechanism commented Jan 13, 2019

Here's the debug of same. It's too many characters for a comment, so I've added a gist.

./gradlew assembleDebug --debug

https://gist.github.com/algorist-mechanism/3e2195ad810f6efb5dfa1f7a03b8da6f#file-gistfile1-txt

@algorist-mechanism
Copy link
Author

Here's build environment for same

~/git/janeasystems/nodejs-mobile-samples-one/cordova/UseNativeModules/platforms/android$ ./gradlew buildEnvironment

> Configure project :CordovaLib
publishNonDefault is deprecated and has no effect anymore. All variants are now published.

> Task :buildEnvironment

------------------------------------------------------------
Root project
------------------------------------------------------------

classpath
\--- com.android.tools.build:gradle:3.2.1
     +--- com.android.tools.build:builder:3.2.1
     |    +--- com.android.tools.build:builder-model:3.2.1
     |    |    \--- com.android.tools:annotations:26.2.1
     |    +--- com.android.tools.build:builder-test-api:3.2.1
     |    |    \--- com.android.tools.ddms:ddmlib:26.2.1
     |    |         +--- com.android.tools:common:26.2.1
     |    |         |    +--- com.android.tools:annotations:26.2.1
     |    |         |    +--- com.google.guava:guava:23.0
     |    |         |    |    +--- com.google.code.findbugs:jsr305:1.3.9
     |    |         |    |    +--- com.google.errorprone:error_prone_annotations:2.0.18 -> 2.2.0
     |    |         |    |    +--- com.google.j2objc:j2objc-annotations:1.1
     |    |         |    |    \--- org.codehaus.mojo:animal-sniffer-annotations:1.14
     |    |         |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71
     |    |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.71
     |    |         |         |    +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.2.71
     |    |         |         |    \--- org.jetbrains:annotations:13.0
     |    |         |         \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.71
     |    |         |              \--- org.jetbrains.kotlin:kotlin-stdlib:1.2.71 (*)
     |    |         \--- net.sf.kxml:kxml2:2.3.0
     |    +--- com.android.tools:sdklib:26.2.1
     |    |    +--- com.android.tools.layoutlib:layoutlib-api:26.2.1
     |    |    |    +--- com.android.tools:common:26.2.1 (*)
     |    |    |    +--- net.sf.kxml:kxml2:2.3.0
     |    |    |    +--- com.android.tools:annotations:26.2.1
     |    |    |    \--- org.jetbrains:annotations:13.0
     |    |    +--- com.android.tools:dvlib:26.2.1
     |    |    |    \--- com.android.tools:common:26.2.1 (*)
     |    |    +--- com.android.tools:repository:26.2.1
     |    |    |    +--- com.android.tools:common:26.2.1 (*)
     |    |    |    +--- com.sun.activation:javax.activation:1.2.0
     |    |    |    +--- org.apache.commons:commons-compress:1.12
     |    |    |    +--- org.glassfish.jaxb:jaxb-runtime:2.2.11
     |    |    |    |    +--- org.glassfish.jaxb:jaxb-core:2.2.11
     |    |    |    |    |    +--- javax.xml.bind:jaxb-api:2.2.12-b140109.1041
     |    |    |    |    |    +--- org.glassfish.jaxb:txw2:2.2.11
     |    |    |    |    |    \--- com.sun.istack:istack-commons-runtime:2.21
     |    |    |    |    +--- org.jvnet.staxex:stax-ex:1.7.7
     |    |    |    |    \--- com.sun.xml.fastinfoset:FastInfoset:1.2.13
     |    |    |    +--- com.google.jimfs:jimfs:1.1
     |    |    |    |    \--- com.google.guava:guava:18.0 -> 23.0 (*)
     |    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71 (*)
     |    |    +--- com.google.code.gson:gson:2.8.0
     |    |    +--- org.apache.commons:commons-compress:1.12
     |    |    +--- org.apache.httpcomponents:httpmime:4.5.2
     |    |    |    \--- org.apache.httpcomponents:httpclient:4.5.2
     |    |    |         +--- org.apache.httpcomponents:httpcore:4.4.4 -> 4.4.5
     |    |    |         +--- commons-logging:commons-logging:1.2
     |    |    |         \--- commons-codec:commons-codec:1.9
     |    |    \--- org.apache.httpcomponents:httpcore:4.4.5
     |    +--- com.android.tools:sdk-common:26.2.1
     |    |    +--- com.android.tools:sdklib:26.2.1 (*)
     |    |    +--- com.android.tools.build:builder-test-api:3.2.1 (*)
     |    |    +--- com.android.tools.build:builder-model:3.2.1 (*)
     |    |    +--- com.android.tools.ddms:ddmlib:26.2.1 (*)
     |    |    +--- org.bouncycastle:bcpkix-jdk15on:1.56
     |    |    |    \--- org.bouncycastle:bcprov-jdk15on:1.56
     |    |    +--- org.bouncycastle:bcprov-jdk15on:1.56
     |    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71 (*)
     |    |    +--- org.jetbrains.kotlin:kotlin-reflect:1.2.0
     |    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.2.0 -> 1.2.71 (*)
     |    |    +--- com.google.protobuf:protobuf-java:3.4.0
     |    |    \--- javax.inject:javax.inject:1
     |    +--- com.android.tools:common:26.2.1 (*)
     |    +--- com.android.tools.build:manifest-merger:26.2.1
     |    |    +--- com.android.tools:common:26.2.1 (*)
     |    |    +--- com.android.tools:sdklib:26.2.1 (*)
     |    |    +--- com.android.tools:sdk-common:26.2.1 (*)
     |    |    +--- com.google.code.gson:gson:2.8.0
     |    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71 (*)
     |    |    \--- net.sf.kxml:kxml2:2.3.0
     |    +--- com.android.tools.ddms:ddmlib:26.2.1 (*)
     |    +--- com.android.tools.analytics-library:protos:26.2.1
     |    |    \--- com.google.protobuf:protobuf-java:3.4.0
     |    +--- com.android.tools.analytics-library:shared:26.2.1
     |    |    +--- com.android.tools.analytics-library:protos:26.2.1 (*)
     |    |    +--- com.android.tools:annotations:26.2.1
     |    |    +--- com.android.tools:common:26.2.1 (*)
     |    |    +--- com.google.guava:guava:23.0 (*)
     |    |    \--- com.google.code.gson:gson:2.8.0
     |    +--- com.android.tools.analytics-library:tracker:26.2.1
     |    |    +--- com.android.tools:annotations:26.2.1
     |    |    +--- com.android.tools:common:26.2.1 (*)
     |    |    +--- com.android.tools.analytics-library:protos:26.2.1 (*)
     |    |    +--- com.android.tools.analytics-library:shared:26.2.1 (*)
     |    |    +--- com.google.protobuf:protobuf-java:3.4.0
     |    |    \--- com.google.guava:guava:23.0 (*)
     |    +--- com.android.tools.build:apksig:3.2.1
     |    +--- com.android.tools.build:apkzlib:3.2.1
     |    |    +--- com.google.code.findbugs:jsr305:1.3.9
     |    |    +--- com.google.guava:guava:23.0 (*)
     |    |    +--- org.bouncycastle:bcpkix-jdk15on:1.56 (*)
     |    |    +--- org.bouncycastle:bcprov-jdk15on:1.56
     |    |    \--- com.android.tools.build:apksig:3.2.1
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71 (*)
     |    +--- com.squareup:javawriter:2.5.0
     |    +--- org.bouncycastle:bcpkix-jdk15on:1.56 (*)
     |    +--- org.bouncycastle:bcprov-jdk15on:1.56
     |    +--- org.ow2.asm:asm:6.0
     |    +--- org.ow2.asm:asm-tree:6.0
     |    |    \--- org.ow2.asm:asm:6.0
     |    +--- org.ow2.asm:asm-commons:6.0
     |    |    \--- org.ow2.asm:asm-tree:6.0 (*)
     |    +--- org.ow2.asm:asm-util:6.0
     |    |    \--- org.ow2.asm:asm-tree:6.0 (*)
     |    +--- it.unimi.dsi:fastutil:7.2.0
     |    +--- net.sf.jopt-simple:jopt-simple:4.9
     |    \--- com.googlecode.json-simple:json-simple:1.1
     +--- com.android.tools.analytics-library:shared:26.2.1 (*)
     +--- com.android.tools.analytics-library:crash:26.2.1
     |    +--- com.android.tools:annotations:26.2.1
     |    +--- com.google.guava:guava:23.0 (*)
     |    +--- org.apache.httpcomponents:httpmime:4.5.2 (*)
     |    +--- org.apache.httpcomponents:httpcore:4.4.5
     |    \--- org.apache.httpcomponents:httpclient:4.5.2 (*)
     +--- com.android.tools.lint:lint-gradle-api:26.2.1
     |    +--- com.android.tools:sdklib:26.2.1 (*)
     |    +--- com.android.tools.build:builder-model:3.2.1 (*)
     |    +--- com.android.tools.build:gradle-api:3.2.1
     |    |    +--- com.android.tools.build:builder-model:3.2.1 (*)
     |    |    +--- com.android.tools.build:builder-test-api:3.2.1 (*)
     |    |    +--- com.google.guava:guava:23.0 (*)
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71 (*)
     |    +--- org.jetbrains.kotlin:kotlin-reflect:1.2.0 (*)
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71 (*)
     |    \--- com.google.guava:guava:23.0 (*)
     +--- com.android.tools.build:gradle-api:3.2.1 (*)
     +--- androidx.databinding:databinding-compiler-common:3.2.1
     |    +--- androidx.databinding:databinding-common:3.2.1
     |    +--- com.android.databinding:baseLibrary:3.2.1
     |    +--- org.antlr:antlr4:4.5.3
     |    +--- commons-io:commons-io:2.4
     |    +--- com.googlecode.juniversalchardet:juniversalchardet:1.0.3
     |    +--- com.google.guava:guava:23.0 (*)
     |    +--- com.squareup:javapoet:1.8.0
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71 (*)
     |    +--- com.google.code.gson:gson:2.8.0
     |    +--- com.android.tools:annotations:26.2.1
     |    \--- com.android.tools.build.jetifier:jetifier-core:1.0.0-alpha10
     |         +--- com.google.code.gson:gson:2.8.0
     |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.2.20 -> 1.2.71 (*)
     +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71 (*)
     +--- com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api
     +--- org.ow2.asm:asm:6.0
     +--- org.ow2.asm:asm-analysis:6.0
     |    \--- org.ow2.asm:asm-tree:6.0 (*)
     +--- org.ow2.asm:asm-commons:6.0 (*)
     +--- org.ow2.asm:asm-util:6.0 (*)
     +--- net.sf.jopt-simple:jopt-simple:4.9
     +--- net.sf.proguard:proguard-gradle:6.0.3
     |    \--- net.sf.proguard:proguard-base:6.0.3
     +--- com.android.tools.build:bundletool:0.5.0
     |    +--- com.google.auto.value:auto-value:1.5.2
     |    +--- com.android.tools.build:aapt2-proto:0.3.1
     |    |    \--- com.google.protobuf:protobuf-java:3.4.0
     |    +--- com.google.errorprone:error_prone_annotations:2.2.0
     |    +--- com.google.guava:guava:22.0 -> 23.0 (*)
     |    +--- com.google.protobuf:protobuf-java:3.4.0
     |    \--- com.google.protobuf:protobuf-java-util:3.4.0
     |         +--- com.google.protobuf:protobuf-java:3.4.0
     |         +--- com.google.guava:guava:19.0 -> 23.0 (*)
     |         \--- com.google.code.gson:gson:2.7 -> 2.8.0
     +--- com.android.tools.build.jetifier:jetifier-core:1.0.0-alpha10 (*)
     \--- com.android.tools.build.jetifier:jetifier-processor:1.0.0-alpha10
          +--- org.ow2.asm:asm:6.0
          +--- org.ow2.asm:asm-util:6.0 (*)
          +--- org.ow2.asm:asm-commons:6.0 (*)
          +--- org.jdom:jdom2:2.0.6
          +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.20 -> 1.2.71 (*)
          \--- com.android.tools.build.jetifier:jetifier-core:1.0.0-alpha10 (*)

(*) - dependencies omitted (listed previously)

A web-based, searchable dependency report is available by adding the --scan option.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/4.9/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed

@algorist-mechanism
Copy link
Author

So perhaps it's node and npm are not available to gradle. So it tried the following from
https://www.digitalocean.com/community/tutorials/how-to-install-node-js-with-nvm-node-version-manager-on-a-vps

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
n=$(which npm);n=${n%/bin/npm}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local

But I get the same error.

@jaimecbernardo
Copy link
Member

Hi @algorist-mechanism ,

I have the same opinion: that gradle is unable to call npm on your machine.
./gradlew assembleDebug --stacktrace might give you the "File not found" exception when this is the case.

Perhaps it's because of the nvm use. Try it without nvm use to see if that's the issue. The file you shared shows us how gradle is trying to run npm and its environment: https://gist.github.com/algorist-mechanism/3e2195ad810f6efb5dfa1f7a03b8da6f#file-gistfile1-txt-L4329-L4330

Building the native libraries for use in native applications is not currently supported. They currently have to be cross-compiled for Android. The gradle file in the plugins can be looked at to understand how this is achieved: https://github.com/janeasystems/nodejs-mobile-cordova/blob/be459ac4702a825a9254be03fc9448a5487436db/src/android/build.gradle#L206-L242

@bavuvanet
Copy link

Hi @algorist-mechanism , @jaimecbernardo ,

I try pouchdb version 7.0.0 and I have the same issue:

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: dlopen failed: cannot locate symbol "napi_create_external" referenced by "/data/data/com.yourorg.sample/files/nodejs-project/node_modules/pouchdb/node_modules/leveldown/prebuilds/android-arm/node-napi.node"...

Have you solved this problem?
Thanks

Screen Shot 2019-05-13 at 09 04 16

@jaimecbernardo
Copy link
Member

Hi @bavuvanet ,

For native modules, you'd need to rebuild them linking against the nodejs-mobile shared libraries, otherwise they won't be correctly link at runtime on Android. (more information in JaneaSystems/nodejs-mobile-gyp#4 )

A possible method of achieving this is implemented in the cordova and react-native plugins.

@JaosnHsieh
Copy link

JaosnHsieh commented May 7, 2021

i fix similar issue by copy older ndk files to current ndk folder

older ndk from https://developer.android.com/ndk/downloads/older_releases

This time i tried ndk 21, 20, 19, 18, 17, and 16. And only android-ndk-r16b contains mipsel-linux-android in toolchains.

error message

No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android

steps to fix it:

  1. install NDK 21.2.6472646 ( via android studio )
  2. install CMake 3.6.4111459( via android studio )
  3. add export ANDROID_NDK_HOME="$HOME/Library/Android/sdk/ndk/21.2.6472646" to your ~/.bash_profile or ~/.zshrc
  4. download android-ndk-r16b from ndk older release
  5. copy android-ndk-r16b/toolchains/mips64el-linux-android-4.9 to $HOME/Library/Android/sdk/ndk/21.2.6472646/toolchains

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants