我知道有很多类似的问题,但我没有找到一个解决我的问题在任何一个。另外,我会提供我的具体情况。

我在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平台- tools 25.0.3 Android SDK Tools 25.3.1 所有Android版本从2.1 (Eclair)到7.1.1 (Nougat)

经过广泛的研究,我把所有与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错误?


当前回答

当你的SDK工具中没有gradle包装器时,就会出现这个问题。

就像之前的回答说,你可以更新到最后的cordova-android版本(它是有效的),但如果你想继续使用cordova-cli@6.4.0和cordova-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(还没有)。

其他回答

到今天为止,没有一个解决方案对我有效。我的情况是我更新了自己的Android工作室。用最新的工具文件夹替换工具文件夹这个最流行的方法对我来说行不通。在某些情况下不需要Infact。

NPM update -g cordova为我做到了。

然后我删除了平台,并重新添加。

Ionic平台移除android

Ionic平台新增android

这在爱奥尼亚行得通。我是surecordova平台删除/添加android将做同样的事情。不过还没有经过测试。

又开始工作了!

编辑3:

Cordova Android 6.2.2已经发布,它完全兼容SDK工具26.0。X和25.3.1。使用这个版本:

Cordova平台更新android@6.2.2

or

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平台更新android@6.2.1

或者你可以删除现有的平台并添加新的平台(将删除你在project /platforms/android/文件夹中所做的任何手动更改)

Cordova平台rm android Cordova平台加android@6.2.1

您必须指定版本,因为当前的CLI安装6.1。默认为X。

旧的回答:

不幸的是,Android SDK工具25.3.1破坏了cordova-android 6.1.x

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

Cordova平台加https://github.com/apache/cordova-android

对于Linux,只需要创建一个符号链接,就像这样:

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

简单易行的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/

科尔多瓦建立的机器人现在又工作了!!

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

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

下载linux的命令行工具zip文件(页面底部)。将它们提取到您的..../Android/Sdk/文件夹,所以你重写/扩展你的工具文件夹。现在一切正常。