错误:在Android SDK中找不到Gradle包装器。可能需要更新您的Android SDK - Android

208

我知道有很多类似这个问题的提问,但我在其中任何一个问题中都找不到解决我的问题的方法。此外,我将为我的具体情况提供详细信息。

我在Ubuntu 16.04 LTS中编码了一个Ionic项目,现在我必须为发布构建该项目。因此,我运行以下命令:

cordova build --release android

我看到了以下错误:

Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK.
Looked here: /home/user/Android/Sdk/tools/templates/gradle/wrapper
  • 我没有这个templates/gradle/wrapper目录。
  • 我的Android Studio版本是2.3,目前为最新版本。
  • Android SDK Platform-Tools版本为25.0.3。
  • Android SDK Tools版本为25.3.1。
  • 支持从2.1(爱克莱尔)到7.1.1(牛轧糖)的所有Android版本。

经过广泛的研究,我将所有与Android Studio相关的环境变量都放在文件/etc/environment中。现在它看起来像这样:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/game:/home/<user>/Android/Sdk:/home/<user>/Android/Sdk/tools:/home/<user>/Android/Sdk/platform-tools"

ANDROID_HOME=/home/<user>/Android/Sdk
export ANDROID_HOME

JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JAVA_HOME

GRADLE_HOME=/opt/android-studio/gradle/gradle-3.2
export GRADLE_HOME

现在,为了测试环境变量,我运行了以下命令:

source /etc/environment
echo $PATH
echo $ANDROID_HOME
echo $JAVA_HOME
echo $GRADLE_HOME

所有路径变量都正确显示。

因此,根据我搜索的各种类似问题和教程,环境变量看起来是正确的。有人知道我做错了什么吗?为什么我还是会出现Gradle Wrapper错误?

24个回答

258

编辑3:

Cordova Android 6.2.2已发布,与SDK工具26.0.x和25.3.1完全兼容。请使用此版本:

cordova platform update android@6.2.2

cordova platform rm android
cordova platform add android@6.2.2

编辑2:

另一个Android SDK工具发布了(26.0.x),与cordova-android 6.2.1不完全兼容。

编辑: Cordova Android 6.2.1已发布,现在与最新的Android SDK兼容。

您可以使用以下命令更新当前不兼容的android平台 cordova platform update android@6.2.1

或者您可以删除现有平台并添加新平台(将删除您在yourProject/platforms/android/文件夹内进行的任何手动更改)

cordova platform rm android cordova platform add android@6.2.1

必须指定版本,因为当前CLI默认安装6.1.x。

旧答案:

可悲的是,Android SDK工具25.3.1破坏了cordova-android 6.1.x。

对于那些不想降级SDK工具的人,您可以从github URL安装cordova-android,因为大多数问题已经在主分支上得到解决。

cordova platform add https://github.com/apache/cordova-android


7
发布现在已经在npm仓库中了,尽管它似乎还没有被自动使用。不过cordova platform add android@6.2.0是有效的。 - Jules
3
现在使用 cordova platform add android@6.2.3 是安全的,你不需要添加 GitHub 版本,因为它可能不稳定。最好使用6.2.3,因为它是最新发布的版本。 - jcesarmobile
1
我正在使用 Cordova 7.0.1,遇到了错误:Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK. 有什么建议吗? - Ethan Keller
1
@EthanKeller 但是你之前是否已经添加了Android平台?如果是这样,请删除它 cordova platform rm android 然后重新添加它 cordova platform add android - jcesarmobile
1
为什么不直接使用 android@latest - Seanny123
显示剩余27条评论

247

我刚刚经历了同样的问题。

可能是有关如何安装(或升级)Android Studio及其所有SDK工具的指示中存在遮挡,我们都错过了,或者可能是由于新版本的Studio创建的缺陷不遵循与旧版本相同的文件约定。我倾向于后者,因为许多关于此主题的SO帖子似乎指向一个名为android-sdk的文件夹的ANDROID_PATH,在最新版本(2.3.0.8)中并不存在。

不过似乎有一个解决方法,我刚刚在我的电脑上成功实现了。以下是我的操作:

  • Android Downloads下载tools_r25.2.3-windows.zip。

  • 在桌面上提取zip文件

  • 用提取出来的子文件夹tools/替换C:\Users\username\AppData\Local\Android\sdk\tools

  • 在项目文件夹中执行以下命令:

    $ cordova platforms remove android
    $ cordova platforms add android

您可能还需要强制删除android中的node_modules。

希望这能有所帮助。


1
谢谢,我也遇到了同样的问题,现在通过你的方法恢复了我的环境。我认为这是Google的问题,所以Cordova开发者需要等待下一个修正更新。 - HirofumiTamori
3
只替换了工具文件夹对我有用。不需要删除和添加平台。 - vahissan
16
非常有用,对于Mac用户来说,您可以执行相同的操作,除了下载Windows工具之外,您需要从以下地址下载:https://dl.google.com/android/repository/tools_r25.2.3-macosx.zip - O. Edholm
14
原始文件可以直接在此处访问:https://dl.google.com/android/repository/tools_r25.2.3-windows.zip?hl=id - user736893
1
Linux工具:https://dl.google.com/android/repository/tools_r25.2.3-linux.zip - Ferdinand.kraft
显示剩余9条评论

57

基本上就是 @user3464070 已经说过的。

对于 Mac 用户:

cd ~/Library/Android/sdk
# download latest tools
curl -O https://dl.google.com/android/repository/tools_r25.2.3-macosx.zip
# overwrite existing tools folder without prompting
unzip -o tools_r25.2.3-macosx.zip
# clean up
rm tools_r25.2.3-macosx.zip

1
为了简单起见,第一行可以是 cd $ANDROID_HOME 吗? - toxaq
1
@toxaq可能是这样,但是我的机器上没有定义$ANDROID_HOME - basecode
2
非常感谢。您的命令+在Mac上使用android@6.1.2非常顺利! - David Dal Busco
完美的答案!看起来是最简单的解决方案!谢谢 :) - Tomas

45
  1. 如果您的系统已安装Android Studio,则从 C:\Program Files\Android\Android Studio\plugins\android\lib\templates 复制模板文件夹。
  2. 将其粘贴到文件夹 C:\Users\<user-name>\AppData\Local\Android\sdk\tools 中。
  3. 运行命令:ionic build android

所有必要的jar文件将被下载,并且将生成应用程序的apk文件。

注意:请将环境变量设置为C:\Users\<user-name>\AppData\Local\Android\sdk\tools。同时,将"user-name"设置为您当前的用户名。


1
简单易用的解决方案! - Jari Pekkala
1
这是一个对于拥有Android Studio的人来说非常简单和经济的解决方案。 - Johnson
1
它对我来说确实有效..当其他解决方案无效时。可惜它似乎主要取决于cordova/ionic/sdk/android studio版本。 - Kaddath
1
截至2018年,我使用了2个不同版本的Cordova,并且可以证明这个解决方案是可行的,不需要额外下载。 - ravemir

25

对于Linux,甚至有更好的解决方案。

导航到https://developer.android.com/studio/index.html#downloads

下载适用于Linux的命令行工具zip文件(页面底部)。将它们提取到您的..../Android/Sdk/文件夹中,以覆盖/扩展您的tools文件夹。现在一切都很顺利。


是的,R J 给出了 Windows 的解决方法,而你的回答则是 Linux 的解决方案。对于那些不知道如何将 Windows 的 C:\Users\username\AppData\Local\Android\sdk\tools 路径转换为 Ubuntu 的 /home/user/Android/Sdk 的人来说非常有用。 - rbenvenuto
@rbenvenuto 这些答案基本上是一样的。下载工具,解压缩文件夹并将提取的内容保存到您的 idk 工具文件夹中。理解起来有多难呢?我正在使用 Mac,并将保存到 ~/Library/Android/sdk/tools。我需要偷别人的赞来解释同样的事情吗? - iOSAndroidWindowsMobileAppsDev
4
没错,不能否认他的回答基本上是用不同的词语解释了一遍。但是我能看出对于像我这样的初学者来说,其中有一些价值。 - rbenvenuto
开发者.android.com上不再提供以前的版本。 - Ferdinand.kraft

20

对于仍然遇到这个问题的人,以下方法适用于我:

    cordova platform update android@latest

然后构建,它会自动下载最新的Gradle版本并应该能够正常工作。


2
+1 这个方法在2017年8月是有效的,并且会将您更新到cordova-android@6.2.3。旧的答案可能已经不再适用或正确。这种情况是由于Android SDK 25.3.1停止支持android二进制文件直接导致的,详情请参见:https://cordova.apache.org/announcements/2017/04/05/android-release.html。 - JK.
1
仍在2018年3月工作。我不经常创建新的cordova项目,这是自从我上次评论以来的第一个。它出现了相同的“找不到gradle包装器”的错误。我不得不再次在SO上查找解决方案。这是每个项目的修复程序,必须应用于您创建的每个新的cordova项目。如果可以的话,我会点赞两次,因为这是这个答案已经第二次拯救了我。 - JK.

12

无需降级Android工具。在Windows上,Gradle从以下位置移动:

C:\Users\you_username\AppData\Local\Android\sdk\tools
C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle\wrapper
所以你只需要调整路径,使其指向正确的文件夹。

6
我做了相反的操作,将包装程序移动到了我的AppData文件夹中,现在一切都正常工作了!谢谢 ^_^ - Nicolas Le Bot
1
最近(五天前),Cordova发布了一个新版本来解决这个问题。请参考此链接:http://cordova.apache.org/announcements/2017/04/28/android-release.html - herve
将此路径 C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle\wrapper 中 wrapper 文件夹的内容复制到 C:/Android/Sdk/tools/templates/gradle/wrapper。 - inspiredMichael

8

如果您在运行ionic run android --device时遇到此错误

## codova - android update 
npm install -g cordova
cordova platform update android

6

我刚刚从典型的Android Studio安装中复制了所有内容。

从:

D:\sw\dev\android\studio\plugins\android\lib\templates

(整个"templates"目录)

到:

D:\sw\dev\android\sdk\tools

已用以下命令进行测试:

ionic build android


这是我的解决方案。解决后,您可能会收到许可消息。请参见 https://dev59.com/TFkS5IYBdhLWcg3wFi-k#40383457。 - JonathanRomer

6
这个问题出现的原因是你的SDK工具中没有gradle wrapper。像之前的回答所说的那样,你可以升级到最新版本的cordova-android(这样可以解决问题),但如果你想继续使用cordova-cli@6.4.0cordova-android@6.0.0,只需从Android Studio复制文件夹即可。
cd /Applications/Android\ Studio.app/Contents/plugins/android/lib/
cp -r templates/ $ANDROID_HOME/tools/templates
chmod +x $ANDROID_HOME/tools/templates/gradle/wrapper/gradlew

在我的情况下,我正在使用 cordova-plugin-fcm 并且它已经经过了旧版本的 cordova-android 测试,所以我不能使用 cordova-android@2.x (目前还不支持)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接