【问题标题】:gradle project sync failed even after upgrading gradle plugin升级 gradle 插件后,gradle 项目同步失败
【发布时间】:2017-12-05 16:38:09
【问题描述】:

Gradle 项目同步失败,没有从其他相关问题中得到答案。这是我的情况的详细信息。

初始同步尝试产生以下错误消息:

Unsupported method: BaseConfig.getApplicationIdSuffix().
The version of Gradle you connect to does not support that method.
To resolve the problem you can change/upgrade the target version of Gradle you connect to.
Alternatively, you can ignore this exception and read other information from the model.

我有 Android Studio 3.0。 build.gradle 文件包含以下依赖:

classpath 'com.android.tools.build:gradle-experimental:0.2.1'

  The gradle-wrapper.properties file includes the following distribution URL:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip

根据https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#update_gradle,我需要进行一些更改。
首先,在 gradle-wrapper.properties 中更新 Android Studio 3.0 的 Gradle 版本:

distributionUrl=\ https://services.gradle.org/distributions/gradle-4.1-all.zip (我认为等号后面的反斜杠是错误的,并没有做出改变。)

第二,在build.gradle中添加如下buildscript仓库:

谷歌()

第三,更改build.gradle依赖:

类路径'com.android.tools.build:gradle:3.0.1'

第二个和第三个更改应用了最新版本的 Android 插件。

当我在这些更改后尝试同步时,它再次失败并出现以下新错误:

未找到 ID 为“com.android.model.application”的插件。

错误指的是build.gradle的第一行:

应用插件:'com.android.model.application'

发生了什么,为什么?我最近将 NDK 添加到 Android Studio。我尝试同步的项目包括 C 代码。我不完全确定我正确添加了 NDK。我想知道这是否是问题的一部分。

【问题讨论】:

  • 新建项目同步成功了吗?
  • 是的,它似乎可以正确同步,但是没有为 C 代码设置常规项目。所以我尝试了“启用 C++ 支持”。这似乎也正确同步。我再次担心这是我的 NDK 设置的问题。如何使用 C 而不是 C++ 支持开始一个新项目?

标签: java android


【解决方案1】:

首先,gradle-wrapper.properties 不正确。您必须在其中包含\。应该是这样的:

#Sat Jun 17 17:47:18 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

然后,将实验类路径添加到项目 build.gradle。像这样的:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle-experimental:0.7.0-alpha4"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

查看Experimental Plugin User Guide了解详情。

【讨论】:

  • 谢谢。根据指南中的链接,我认为合适的 gradle 插件版本是 0.11.0-alpha-preview-02。我将 build.gradle 行更改为此。同步产生错误,表明此插件需要 gradle 4.0,而不是 4.1。我将 gradle-wrapper 属性行更改为 4.0。然后同步似乎进行得更远,但我又遇到了另一个错误。无法为类设置只读属性:proguardFiles:com.android.build.gradle.managed.BuildType 这个错误表示什么?
【解决方案2】:

转到您的 build.gradle 版本或更新它

dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'
}

【讨论】:

    【解决方案3】:

    你应该改变你dependenciesclasspath

    所有步骤都在这里:

    • 打开 build.gradle 并将 gradle 版本更改为推荐版本:
      classpath 'com.android.tools.build:gradle:1.3.0' 为
      classpath 'com.android.tools.build:gradle:2.3.2'
    • 点击'Try Again'
    • 在消息框中会显示'Fix Gradle Wrapper and re-import project' 点击它,因为最低的gradle 版本是3.3
    • 会弹出一个新错误并说The SDK Build Tools revision (23.0.1) is too low for project ':app'. Minimum required is 25.0.0 - 点击Update Build Tools version and sync project
    • 可能会弹出一个显示Android Gradle Plugin Update recommended 的窗口,请从那里更新。

    现在该项目应该可以在您的任何 android 虚拟设备上运行了。

    【讨论】:

      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多