cna*_*ers 28 android gradle cordova android-studio ionic-framework
这是我想要记录的上述错误的解决方案.我发现了其他类似的帖子,但都没有描述这个错误如何与Cordova或Ionic相关联.
如果您不小心,Android Studio使用的Gradle版本与Cordova/cordova-android在其自动生成的应用程序代码中指定的Gradle版本可能不匹配.如你所知,跑步
$ cordova platform add android
Run Code Online (Sandbox Code Playgroud)
(或者$ 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';
Run Code Online (Sandbox Code Playgroud)
其中x和y取决于使用哪个版本的Cordova/cordova-android来构建本机应用程序代码.
当你跑步
$ cordova build android
Run Code Online (Sandbox Code Playgroud)
distributionUrl
var中指定的Gradle 版本是用于构建的版本.
现在这里是棘手的部分.当您将项目导入Android Studio时,您很可能会收到一条消息,强烈建议您将Gradle升级到更新版本,如下所示:
如果您这样做,Android Studio将下载新版本的Gradle并将其存储在本地并配置项目以使用新下载的本地Gradle分发,这是所选"使用默认等级包装"下方的无线电选项,我最终取消选择,因为这会导致错误.
这将导致问题,因为Android Studio和Cordova现在将尝试使用不同版本的Gradle构建应用程序,您将在Android Studio中获得构建错误,并且
$ cordova build android
Run Code Online (Sandbox Code Playgroud)
在命令行中.Cordova应用程序的解决方案是始终将Android Studio项目设置为"使用默认gradle包装器"并忽略要升级的诱人消息.如果您确实想使用较新版本的Gradle,则可以随时更改上述文件中的distributionUrl var(但Cordova强烈建议不要修改平台文件夹中的代码,因为它很容易被覆盖).在撰写本文时,我无法分辨是否有办法设置Gradle版本
$ cordova platform add android
Run Code Online (Sandbox Code Playgroud)
步骤,这是你想要这样做,所以你永远不会直接修改项目/平台内的代码
zha*_*ett 17
对我来说,以下命令解决了这个问题:
cordova platform remove android
cordova platform add android
ionic build android
Run Code Online (Sandbox Code Playgroud)
Bun*_*ler 14
我想把这个留作评论,但我显然不够信誉......
阅读完文档后,我无法解决我的问题,建议将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
Run Code Online (Sandbox Code Playgroud)
我接下来要做的就是编辑<project>/platforms/android/build.gradle
并<project>/platforms/android/CordovaLib/build.gradle
确保它们都指向有效的gradle插件版本.
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
Run Code Online (Sandbox Code Playgroud)
...并且<project>/platforms/android/CordovaLib/build.gradle
我在存储库中添加了jcenter(因为maven.org似乎没有2.2.0)
repositories {
mavenCentral();
jcenter()
}
Run Code Online (Sandbox Code Playgroud)
我当时能够建造.
小智 7
切换回"使用默认gradle包装器"对我的离子1项目不起作用,但运行
ionic platform remove android
ionic platform add android
Run Code Online (Sandbox Code Playgroud)
为我工作
解决问题的另一种方法,也适用于 Windows:
cordova build android --release --CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
Run Code Online (Sandbox Code Playgroud)
你可以改变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';
Run Code Online (Sandbox Code Playgroud)
或者像其他人一样
export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.zip"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33914 次 |
最近记录: |