":应用程序:buildNative“。 > !将execCommand == NULL"建立我的机器人工作室的应用程序时使用NDK。是什么原因造成这种/我该怎么TS进一步? [英] ":app:buildNative'. > execCommand == null!" when building my app in Android Studio and using NDK. What is causing this/how can I TS further?

查看:518
本文介绍了":应用程序:buildNative“。 > !将execCommand == NULL"建立我的机器人工作室的应用程序时使用NDK。是什么原因造成这种/我该怎么TS进一步?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我试图建立我的机器人工作室的Andr​​oid应用程序时发现了错误。该应用程序使用NDK我认为这是什么原因造成的问题。我很新与Android的工作室,并一直在处理这个问题上约2个星期了。经过大量的谷歌搜索的,我不明白的问题是什么/如何TS这一点,没有任何想法是怎么回事。我也想不出如何使用上的 build.gradle 文件或如何调试器看到 System.env.ANDROID_NDK_HOME <值/ code>。我似乎停留在墙上,所以任何帮助/建议是AP preciated。

 错误:摇篮:执行失败的任务:应用程序:buildNative。
将execCommand == NULL!
 

这是在build.gradle的buildNative任务。

 任务buildNative(类型:执行){

    如果(System.env.ANDROID_NDK_HOME!= NULL){
        高清ndkBuild =新的文件(System.env.ANDROID_NDK_HOME,NDK建造)
        命令行ndkBuild
    } 其他 {
        doLast {
            的println'##################'
            的println跳绳NDK版本
            的println原因:ANDROID_NDK_HOME未设置。
            的println'##################'
        }
    }
}
 

这里是堆栈跟踪

  *例外是:
org.gradle.api.tasks.TaskExecutionException:执行失败的任务:应用程序:buildNative。
    在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    在org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    在org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    在org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    在org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
    在org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    在org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    在org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    在org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:289)
    在org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
    在org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
    在org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
    在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ 1.运行(DefaultTaskPlanExecutor.java:33)
    在org.gradle.internal.Factories $ 1。创建(Factories.java:22)
    在org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:198)
    在org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:266)
    在org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunningOperation(DefaultPersistentDirectoryStore.java:135)
    在org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.longRunningOperation(DefaultTaskArtifactStateCacheAccess.java:95)
    在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:31)
    在org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:86)
    在org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
    在org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
    在org.gradle.execution.DefaultBuildExecuter.access $ 200(DefaultBuildExecuter.java:23)
    在org.gradle.execution.DefaultBuildExecuter $ 2.proceed(DefaultBuildExecuter.java:67)
    在org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    在org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
    在org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54)
    在org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:166)
    在org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113)
    在org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81)
    在org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:64)
    在org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
    在org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
    在org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:35)
    在org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
    在org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)
    在org.gradle.internal.Actions $ RunnableActionAdapter.execute(Actions.java:171)
    在org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:201)
    在org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:174)
    在org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:170)
    在org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:139)
    在org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
    在org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
    在org.gradle.launcher.Main.doAction(Main.java:46)
    在org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
    在org.gradle.launcher.Main.main(Main.java:37)
    在org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50)
    在org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32)
    在org.gradle.launcher.GradleMain.main(GradleMain.java:23)
    在org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33)
    在org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)
    在org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
致:java.lang.IllegalStateException:将execCommand == NULL!
    在org.gradle.process.internal.AbstractEx​​ecHandleBuilder.build(AbstractEx​​ecHandleBuilder.java:120)
    在org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:28)
    在org.gradle.api.tasks.Exec.exec(Exec.java:63)
    在org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
    在org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:219)
    在org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:212)
    在org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:201)
    在org.gradle.api.internal.AbstractTask $ TaskActionWrapper.execute(AbstractTask.java:533)
    在org.gradle.api.internal.AbstractTask $ TaskActionWrapper.execute(AbstractTask.java:516)
    在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 52更多
 

解决方案

假设你有一个Mac上运行在终端以下命令:

这些命令将设置您所使用的环境变量。

该命令设置NDK的位置:

  launchctl SETENV ANDROID_NDK_HOME /路径到您的-NDK
 

此命令设置你的项目路径,以便NDK会知道你正在做哪种项目:

  launchctl SETENV NDK_PROJECT_PATH /路径到你的项目
 

This is the error I am getting when trying to build my android app in android studio. The app is using NDK which I think is what is causing the issue. I am very new with android studio and have been dealing with this issue for about 2 weeks now. After lots of googling, I don't understand what the issue is/how to TS this and don't have any idea what is going on. I also can't figure out how to use the debugger on the build.gradle file or how to see the value of System.env.ANDROID_NDK_HOME. I seem to be stuck at a wall, so any help/advise is appreciated.

Error:Gradle: Execution failed for task ':app:buildNative'.
execCommand == null!

This is the buildNative task in build.gradle.

task buildNative(type: Exec) {

    if (System.env.ANDROID_NDK_HOME != null) {
        def ndkBuild = new File(System.env.ANDROID_NDK_HOME, 'ndk-build')
        commandLine ndkBuild
    } else {
        doLast {
            println '##################'
            println 'Skipping NDK build'
            println 'Reason: ANDROID_NDK_HOME not set.'
            println '##################'
        }
    }
}

And here is the stack trace

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:buildNative'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:289)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$1.run(DefaultTaskPlanExecutor.java:33)
    at org.gradle.internal.Factories$1.create(Factories.java:22)
    at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:198)
    at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:266)
    at org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunningOperation(DefaultPersistentDirectoryStore.java:135)
    at org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.longRunningOperation(DefaultTaskArtifactStateCacheAccess.java:95)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:31)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:86)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
    at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:166)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:64)
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)
    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:201)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:174)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:170)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:139)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
    at org.gradle.launcher.Main.doAction(Main.java:46)
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
    at org.gradle.launcher.Main.main(Main.java:37)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32)
    at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
    at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33)
    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: java.lang.IllegalStateException: execCommand == null!
    at org.gradle.process.internal.AbstractExecHandleBuilder.build(AbstractExecHandleBuilder.java:120)
    at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:28)
    at org.gradle.api.tasks.Exec.exec(Exec.java:63)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:219)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:212)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:201)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:533)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:516)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 52 more

解决方案

Assuming you have a Mac run these commands in the terminal:

These commands will set the environment variables that you are using.

This command sets the ndk location:

launchctl setenv ANDROID_NDK_HOME /path-to-your-ndk

This command sets your project path so the ndk will know what project you are working on:

launchctl setenv NDK_PROJECT_PATH /path-to-your-project

这篇关于&QUOT;:应用程序:buildNative“。 &GT; !将execCommand == NULL&QUOT;建立我的机器人工作室的应用程序时使用NDK。是什么原因造成这种/我该怎么TS进一步?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆