这是我要记录的上述错误的解决方案。我发现了其他类似的帖子,但都没有描述这个错误如何与Cordova或Ionic相关联。
如果您不小心,Android Studio使用的Gradle版本与Cordova / cordova-android在其自动生成的应用程序代码中指定的Gradle版本可能不匹配。如您所知,正在运行
$ cordova platform add android
(或$ ionic platform add android
,如果您正在构建Ionic应用程序)在-project / platforms / android上创建本机应用程序代码。
在该文件夹中,文件:/the-project/platforms/android/cordova/lib/builders/GradleBuilder.js导出一个变量,如下所示:
var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-x.y-all.zip';
x和y取决于使用哪个版本的Cordova / cordova-android来构建本机应用程序代码。
运行时
$ cordova build android
distributionUrl
var中指定的Gradle版本是用于构建的版本。
现在有了棘手的部分。当您将项目导入Android Studio时,您很可能会收到一条消息,强烈建议您将Gradle升级到更新版本,如下所示:
如果您这样做,Android Studio将下载新版本的Gradle并将其存储在本地并配置项目以使用新下载的本地Gradle分发,这是所选“使用默认等级包装”下方的无线电选项,我最终取消选择,因为这会导致错误。
这会导致问题,因为Android Studio和Cordova现在将尝试使用不同版本的Gradle构建应用程序,您将在Android Studio中以及
中获得构建错误$ cordova build android
在命令行中。 Cordova应用程序的解决方案是始终将Android Studio项目设置为"使用默认的gradle包装器"并忽略要升级的诱人消息。如果您确实想使用较新版本的Gradle,则可以随时更改上述文件中的distributionUrl var(但Cordova强烈建议不要修改平台文件夹中的代码,因为它很容易被覆盖)。在撰写本文时,我无法分辨是否有办法在
设置Gradle版本$ cordova platform add android
步骤,这是你想要的时候,所以你永远不会直接修改项目/平台内的代码
答案 0 :(得分:18)
对我来说,以下命令解决了这个问题:
cordova platform remove android
cordova platform add android
ionic build android
答案 1 :(得分:13)
我很乐意将此作为评论,但我显然不够信誉......
阅读完您的文档后,我无法解决我的问题,建议您将Android Studio保持为“使用默认的gradle包装器”。我找到的是在构建之前设置会话变量CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL让我更进一步:
root@dev:$ export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.zip"
root@dev:$ cordova build android
我接下来要做的就是编辑<project>/platforms/android/build.gradle
和<project>/platforms/android/CordovaLib/build.gradle
并确保它们都指向有效的gradle插件版本。
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
...在<project>/platforms/android/CordovaLib/build.gradle
我在存储库中添加了jcenter(因为maven.org似乎没有2.2.0)
repositories {
mavenCentral();
jcenter()
}
我当时能够建造。
答案 2 :(得分:8)
切换回“使用默认gradle包装器”对我的离子1项目不起作用,但是正在运行
View rootView = LayoutInflater.from(getContext()).inflate(android.R.layout.abc_activity_chooser_view);
View x = rootView.findViewById(android.R.id.<name>);
为我工作
答案 3 :(得分:5)
你可以改变platform / android / cordova / lib / builders / GradleBuilder.js中的值
您更改的值,当您重新安装Android平台时,它将由最新的gradle zip替换,因此您不必担心更改它
var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-2.14.1-all.zip';
或喜欢其他人
export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.zip"
答案 4 :(得分:3)
修复问题的另一种方法,也适用于Windows:
cordova build android --release --CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
答案 5 :(得分:2)
我想延长@bungler的答案。
我对gradle&amp;的版本感到困惑兼容的gradle安卓插件版本。以下链接具有兼容版本映射列表:
Gradle vs Android plugin for gradle - Compatible version list
对于当前版本的gradle 3.3 + ,Android插件的兼容版本为 2.3.3
所以最终设置如下:
适用于Mac
步骤1:在env变量中添加以下内容:
选项a)更新env变量:
export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-3.3-all.zip"
或
选项b)您可以下载gradle file并将其放入<project>/platforms/android/gradle/
并更新env变量:
export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="../gradle-3.3-all.zip"
第2步:在<project>/platforms/android/CordovaLib/build.gradle
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
这对我有用。
答案 6 :(得分:1)
以下错误:
支持的最低Gradle版本为4.1。目前的版本是3.3。如果 使用gradle包装器,尝试编辑distributionUrl E:\ ionic \ MyIonicProject \ gr adle \ wrapper \ gradle-wrapper.properties to gradle-4.1-all.zip for gradle 4.1
这个命令对我有用:
ionic cordova platform update android
答案 7 :(得分:0)
在查克·霍尔布鲁克(Chuck Holbrooks)的回答中,采用以下解决方案时,当我尝试再次添加android平台并说它已经添加时,出现错误。
ionic cordova platform remove android
ionic cordova platform add android
我的工作解决方案:
ionic cordova platform remove android
ionic cordova platform check android
ionic cordova platform add android