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


199

我知道有很多与此问题类似的问题,但是在任何一个问题中我都找不到解决方案。此外,我将提供具体案例的详细信息。

我在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平台工具25.0.3
  • Android SDK工具25.3.1
  • 从2.1(Eclair)到7.1.1(Nougat)的所有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错误?

Answers:


246

我只是遇到了同样的问题。

关于如何使用您和我都错过的所有SDK工具安装(或升级)Android Studio的说明中的一种遮挡,或者可能是由于Studio的新版本未遵循与Android相同的文件约定而导致的错误。旧版本。我倾向于后者,因为有关此主题的许多SO帖子似乎都指向一个名为android-sdk的文件夹的ANDROID_PATH,该文件夹未出现在最新版本(2.3.0.8)中。

不过,似乎有一种解决方法,我只能在机器上工作。这是我所做的:

  • Android下载中下载tools_r25.2.3-windows.zip 。
  • 提取的zip在桌面上
  • 将C:\ Users \ username \ AppData \ Local \ Android \ sdk \ tools替换为提取的子文件夹工具/
  • 在项目文件夹中:

    $ cordova平台删除android
    $ cordova平台添加android

您可能还需要在Android中强制删除node_modules。希望这会有所帮助。


1
THX,我也陷入了同样的现象,现在通过您的补救措施恢复了我的环境。我认为这是Google的错,因此Cordova开发人员应等待下一个更正的更新。
HirofumiTamori

1
有完全一样的问题。降级了“ Android SDK工具” 25.2.3,从而解决了该问题。我们可能应该等待Google / Android团队的更新。
gregor

3
仅替换tools文件夹对我有用。不必删除和添加平台。
vahissan

16
非常有用,对于Mac,除了Windows的下载工具外,您可以执行以下操作,您可以从Mac上的以下地址下载该文件:dl.google.com/android/repository/tools_r25.2.3-macosx.zip
O. Edholm

14
原始文件可以直接访问这里:dl.google.com/android/repository/...
魔鬼代言人

254

编辑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,因为大多数问题已在master分支上解决。

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


7
现在,该版本已发布在npm存储库中,尽管它似乎尚未自动使用。 cordova platform add android@6.2.0虽然有效。
Jules

3
@chrjs 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.什么建议吗?
伊桑·凯勒

1
@EthanKeller,但是您之前是否添加了android平台?如果是这样,请将其删除并cordova platform rm android重新添加cordova platform add android
-jcesarmobile

1
为什么不只是android@latest呢?
Seanny123 '17

56

(基本上@ 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在我的机器上未定义。
代码

2
多谢。在Mac上,您的命令+使用android@6.1.2就像一个魅力!
David Dal Busco

43
  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。还要将用户名设置为您当前的用户名。


1
简单易用的解决方案!
加里·佩卡拉

1
对于拥有Android Studio的用户来说,这是一种简单而经济的解决方案。
约翰逊

1
它实际上对我有用..当其他解决方案不起作用时。太糟糕了,它似乎主要取决于cordova / ionic / sdk / android studio版本
Kaddath

1
从2018年开始,使用2个不同版本的Cordova,我可以为这一解决方案提供担保,因为它可以工作并且不需要额外下载。
拉韦米尔

26

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

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

并下载适用于Linux的命令行工具zip文件(页面底部)。将它们解压缩到您的.... / Android / Sdk /文件夹中,以便覆盖/扩展tools文件夹。现在一切正常。


是的,RJ回答了Windows的问题解决方法,而您的回答是Linux解决方案。对于不知道如何解决Windows C:\Users\username\AppData\Local\Android\sdk\tools到Ubuntu的人有用/home/user/Android/Sdk
rbenvenuto

@rbenvenuto答案基本相同。下载工具,解压缩zip文件夹,然后将解压缩的内容保存到idk的工具文件夹中。理解起来有多困难?我使用的是Mac,并且会保存到〜/ Library / Android / sdk / tools,是否需要我偷别人的票才能用不同的词解释同一件事?
iOSAndroidWindowsMo​​bileAppsDev

4
@Anon Yep,不能否认他的回答几乎是相同的解释,只是用了不同的词。但是对于那些像我这样苦苦挣扎的初学者,我可以看到其中的一些价值
rbenvenuto

以前的版本在developer.android.com中不再可用
Ferdinand.kraft

21

对于仍然存在此问题的任何人,这对我有用:

    cordova platform update android@latest

然后构建,它将自动下载最新的gradle版本,并且应该可以正常工作


2
+1的工作日为@ 2017年8月,并将您更新为cordova-android@6.2.3。较早的答案可能会或可能不会或不再正确。这种情况在不断变化,并直接由Android SDK中25.3.1下降引起的对于Android二进制数据支持,如下所述:cordova.apache.org/announcements/2017/04/05/...
JK。

1
截至2018年3月仍在工作。我不经常创建新的cordova项目,这是自上次评论以来的第一个。它有相同的could not find gradle wrapper错误。我不得不再次在SO上查找解决方案。这是每个项目的修订,必须应用于您创建的每个新的cordova项目。如果可以的话,将投票两次,这是该答案第二次拯救了我。
JK。

14

无需降级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_LeBot


包装文件夹的内容从该路径复制C:\ Program Files文件\的Android \ Android Studio中\插件\机器人\ LIB \模板\ gradle这个\包装到C:/安卓/ SDK /工具/模板/ gradle产出/包装
inspiredMichael

9

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

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


6

当您没有将Gradle包装器放入SDK工具时,就会出现此问题。

就像之前的回答一样,您可以更新到最新cordova-android版本(有效),但是如果您想继续使用cordova-cli@6.4.0cordova-android@6.0.0,只需从android studio ex复制文件夹即可。

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(尚未使用)。


5

对于Linux,只需建立一个符号链接,如下所示:

ln -s /android/android-studio/plugins/android/lib/templates /android/sdk/tools/templates

没有测试symlink解决方案,但是在我的系统/opt/android-studio/plugins/android/lib/templates/gradle/wrapper/gradlew上没有执行许可。在尝试之前,请确保对其进行chmod。
Ferdinand.kraft

我在下没有模板/文件夹sdk/tools
PlayHardGoPro

5

在linux上(在我的情况下是Ubuntu)只需安装gradle:

sudo apt-get install gradle

编辑:似乎ubuntu回购仅具有gradle 2.10,对于较新的版本:https ://www.vultr.com/docs/how-to-install-gradle-on-ubuntu-16-10


1
以上解决方案均不适用于我。我正在使用最新版本的cordova 7.0.1。从ubuntu repo安装gradle解决了这个问题。它的2017年和至今仍是Cordova不知道要使用Android Studio的内置gradle
sziraqui

3

就在最近,我也遇到了类似的问题,执行此操作后,它起作用了:

我在编辑文件 /etc/profile

sudo nano /etc/profile

export JAVA_HOME=/home/abdul/java/jdk1.8.0_131
export PATH=$PATH:$JAVA_HOME/bin

export ANDROID_HOME=/home/abdul/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools

export GRADLE_ANDROID_HOME=/home/abdul/android-studio/gradle
export PATH=$PATH:$GRADLE_ANDROID_HOME/gradle-3.2/bin
export PATH=$PATH:$GRADLE_ANDROID_HOME/m2repository

其他信息(以防万一):

不确定m2repository部分,在第一次尝试中它通过了大号,但是还有另一个错误(gradlew-command-failed-with-exit-code-

  1. 我检查android studio中的存储库是否处于活动状态,并且未处于活动状态,我尝试将其激活,然后再次尝试(科尔多瓦构建Android)时,它是否从存储库中下载了其他文件?然后,当我删除路径时,它仍然有效。(还要感谢Marcin Orlowski示例,这样我才能更好地了解导出路径)。

我用:

  • Linux Mint Serena
  • 节点:v6.10.3
  • npm:3.10.10
  • 科尔多瓦:7.0.0
  • Android Studio:2.3.1
  • Android SDK平台工具:25.0.5
  • Android SDK工具:26.0.2

希望它可以帮助任何可能遇到像我一样的问题并且也需要它的人。

谢谢




2

到目前为止,没有一种解决方案对我有用。我的情况是我更新了Android Studio。用最新的文件夹替换tools文件夹最流行的做法对我来说不起作用。在某些情况下不需要事实。

npm update -g cordova 为我做了把戏。

然后,我删除了平台并再次添加了它。

ionic platform remove android

ionic platform add android

这在Ionic对我有用。我肯定cordova platform remove/add android会做同样的事情。虽然没有测试。

再次工作!


2

在以不同顺序两次尝试了这里所有内容之后,我重新安装了所有内容,然后cordova platform add android再去templates/gradle运行gradlew.bat。完成此操作后,我可以毫无问题地添加android平台了。



0

跑:

cordova platform update android@6.1.2

并确保Android Studio和Android Studio环境变量引用到同一位置。

我通过从以下位置复制Android Studio来解决此问题:

D:\Program Files\Android

C:\Program Files\Android

0

在cordova升级到7.0.x之后,gradle路径已如上所述进行了更改。要在正式修复程序发布之前使其正常工作,只需手动安装gradle并将其设置在您的环境中即可。

  1. 转到https://gradle.org/install下载二进制包
  2. 解压缩它,记住路径,例如,我的位置:E:\ Gradle
  3. 设置环境变量,例如在Windows上添加E:\ Gradle \ bin

而已。


0

遇到相同的问题后,只需在config.xml中重命名程序包名称,并在其中使用不带“-”名称的属性ID即可。

com.web-projet.appname

更名为:

com.webprojet.appname

一切都是正确的...

如果有帮助。



0

我正在使用Ubuntu 16.04,对我来说,只需使用两个命令即可:-

ionic cordova platform rm android
ionic cordova platform add android@6.3.0

-1

轻松简单的MAC解决方案

我的问题是

cordova build android
ANDROID_HOME=/Users/jerilkuruvila/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home
Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK.
Looked here: /Users/jerilkuruvila/Library/Android/sdk/tools/templates/gradle/wrapper

jerilkuruvila@Jerils-ENIAC tools $ cd templates
-bash: cd: mkdir: No such file or directory
jerilkuruvila@Jerils-ENIAC tools $ mkdir templates
jerilkuruvila@Jerils-ENIAC tools $ cp -rf gradle templates/
jerilkuruvila@Jerils-ENIAC tools $ chmod a+x templates/

科尔多瓦建立Android再次工作现在!


1
你能解释一下吗?为什么会发生?
wilfredonoyola
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.