Android Cordova生成失败,未指定buildToolsVersion

Android Cordova生成失败,未指定buildToolsVersion,android,cordova,build,build-tools,Android,Cordova,Build,Build Tools,这正是我所得到的错误 F:\XXX\XXX\XXX\myApp-1>cordova build android ANDROID_HOME=L:\android-sdks JAVA_HOME=C:\Program Files\Java\jdk1.8.0_45 Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configur ation failure takes precedence. java.

这正是我所得到的错误

F:\XXX\XXX\XXX\myApp-1>cordova build android
ANDROID_HOME=L:\android-sdks
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_45
Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configur
ation failure takes precedence.
java.lang.IllegalStateException: buildToolsVersion is not specified.
        at com.google.common.base.Preconditions.checkState(Preconditions.java:17
6)
        at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.jav
a:599)
        at com.android.build.gradle.BasePlugin$10$1.call(BasePlugin.java:566)
        at com.android.build.gradle.BasePlugin$10$1.call(BasePlugin.java:563)
        at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.ja
va:55)
        at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.ja
va:47)
        at com.android.build.gradle.BasePlugin$10.execute(BasePlugin.java:562)
        at com.android.build.gradle.BasePlugin$10.execute(BasePlugin.java:559)
        at org.gradle.listener.BroadcastDispatch$ActionInvocationHandler.dispatc
h(BroadcastDispatch.java:109)
        at org.gradle.listener.BroadcastDispatch$ActionInvocationHandler.dispatc
h(BroadcastDispatch.java:98)
        at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java
:83)
        at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java
:31)
        at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocat
ionHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy12.afterEvaluate(Unknown Source)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfte
rEvaluate(LifecycleProjectEvaluator.java:79)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(L
ifecycleProjectEvaluator.java:65)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProj
ect.java:504)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProj
ect.java:83)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(Task
PathProjectEvaluator.java:42)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuil
dConfigurer.java:35)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(Default
GradleLauncher.java:129)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradle
Launcher.java:106)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLaun
cher.java:86)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildCon
troller.run(InProcessBuildActionExecuter.java:80)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.jav
a:33)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.jav
a:24)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce
ssBuildActionExecuter.java:36)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce
ssBuildActionExecuter.java:26)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBu
ild.java:47)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(Build
CommandOnly.java:34)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed
(DaemonCommandExecution.java:119)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(
WatchForDisconnection.java:35)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed
(DaemonCommandExecution.java:119)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute
(ResetDeprecationLogger.java:24)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed
(DaemonCommandExecution.java:119)
        at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execut
e(StartStopIfBuildAndStop.java:33)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed
(DaemonCommandExecution.java:119)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(Forw
ardClientInput.java:71)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(Forw
ardClientInput.java:69)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(For
wardClientInput.java:69)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed
(DaemonCommandExecution.java:119)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClien
t.java:60)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(Build
CommandOnly.java:34)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed
(DaemonCommandExecution.java:119)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBu
ild(EstablishBuildEnvironment.java:70)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(Build
CommandOnly.java:34)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed
(DaemonCommandExecution.java:119)
        at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(Da
emonHygieneAction.java:39)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed
(DaemonCommandExecution.java:119)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.
run(StartBuildOrRespondWithBusy.java:46)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(Daemon
StateCoordinator.java:246)
        at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecut
orImpl$1.run(DefaultExecutorFactory.java:64)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:617)
        at java.lang.Thread.run(Thread.java:745)

FAILURE: Build failed with an exception.

* Where:
Script 'F:\XXX\XXX\XXX\myApp-1\platforms\android\Cordova
Lib\cordova.gradle' line: 40

* What went wrong:
A problem occurred evaluating root project 'android'.
> cordova_9wgvcsxf5r9stvckgd0tfi8q2$_getAvailableBuildTools_closure3

* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.
BUILD FAILED

Total time: 10.712 secs
Error: Error code 1 for command: cmd with args: /s,/c,""F:\XXX\XXX\XXX\myApp-1\platforms\android\gradlew" cdvBuildDebug -b "F:\XXX
\XXX\XXX\myApp-1\platforms\android\build.gradle" -Dorg.gradle.
daemon=true -Pandroid.useDeprecatedNdk=true"
我已经在这里阅读了针对这个问题发布的不同解决方案,对于我来说,只是简单地应用

cordova platforms remove android
然后

以前是用来修好的,但现在连修好都不行了。令人沮丧的是,我在同一台计算机上有两个项目,我一直在一起更新,其中一个是构建的,而另一个不是。所以我不能责怪ANDROID_HOME之类的。我这样说的意思是:

F:\XXX\XXX\XXX\myApp-2>Cordova build android
工作完美


有什么想法吗?我是不是做了什么事破坏了我的计划?我相信两种配置都很相似,但如果有人能给我指出正确的方式,我将不胜感激。谢谢。

我通过用我的项目重新克隆回购协议解决了这个问题。如果它对任何人都有帮助

我通过使用Unix(LF)行结尾保存build.gradle和/或build-extras.gradle解决了这个问题。

我也遇到了同样的问题。我的修正如下:-

打开Android studio配置

进入配置>SDK管理器>Android SDK>SDK工具并安装Android SDK构建工具

检查ANDROID_HOME变量。我在mac上,所以它指向
“/Users//Library/Android/sdk/”
。如果您在其他系统上,则需要找到正确的路径

如果设置不正确,请按如下方式进行设置:-

export ANDROID\u HOME=“/Users//Library/ANDROID/sdk/”

现在重新构建它,它应该可以正常工作

如果您尚未安装android studio,路径可能会有所不同,您需要找出实际路径。我建议安装Android Studio,因为它使事情变得更简单


我也有同样的问题,我的android版本代码是
25.0.3

config.xml
文件中类似

<widget android-versionCode="25.0.3" id="zakdev.projects.com" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">

为什么要更改build.gradle文件。这是在build文件夹中自动生成的。如何在mac中设置android_主页。我也犯了同样的错误。无法修复。您需要找到android sdk的路径,然后可以使用
export android\u HOME
命令设置路径。请参考这篇stackoverflow帖子,我试着去看看这个问题。我不确定
versionCode
是否能像您希望的那样工作
<widget android-versionCode="25.0.3" id="zakdev.projects.com" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget android-versionCode="25" id="zakdev.projects.com" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">