Cause: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierImpl.getModuleIdentifier()

今天打开项目工程,忽然提示Cause:org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierImpl.getModuleIdentifier()Lorg/gradle/api/artifacts/ModuleIdentifier;

上网查阅后才发现是2018.1版本的IDEA与高版本的gradle(如5)不兼容,需要换成低版本的gradle(如gradle4.10)。

需要更改Required Gradle version版本,如下图

将其改为4.4后编译又提示

一、这里就要了解一下Gradle是什么?

Gradle其实就是一个构建项目的工具,即把一堆堆的目录、文件按照一定的规则关联起来,形成一个项目的自动化构建工具。

 

1、Gradle版本,如gradle-4.10.1-all.zip

位置:项目主目录 gradle 文件夹->wrapper->gradle-wrapper.propertiesGradle插件是针对Gradle发行版和Android SDK Build Tools封装的一个工具,主要有两大功能:

  1. 调用Gradle本身的代码和批处理工具来构建项目
  2. 调用Android SDK的编译、打包功能

2、Gradle插件版本

项目主目录下的 build.gradle 中,如“com.android.tools.build:gradle:3.3.0”

Gradle插件会有版本号(3.3.0),每个版本号又对应有一个或一些 Gradle发行版本(一般是限定一个最低版本,如gradle-4.1-all.zip)

3、 Android SDK Build Tools Version:Android SDK 构建工具版本

buildToolsVersion 位置:app 目录->buid.gradle 文件

二、依赖关系

明确概念:

  • Gradle Plugin Version: Gradle 插件版本

  • Gradle Version: Gradle发行版本

  • Android SDK Build Tools Version:Android SDK 构建工具版本

三者依赖关系

  1. Gradle Plugin 有不同的版本号。 即我们常见的:classpath 'com.android.tools.build:gradle:3.0.1'】,
    每个插件版本号又对应一个或一些 Gradle 发行版本【即我们常见的:gradle-4.1-all.zip】

如果这两个版本对应不上了,那么构建项目的时候就会报错。

  1. Gradle Plugin 还和 Android SDK BuildTool 有关联,因为它还负责和编译相关的功能,这也是为何我们要在 build.gradle 里注明 buildToolsVersion 的原因。

三者对应关系如下表:

 

 

plugin versionRequired Gradle versionRequired Gradle version
1.0.0 - 1.1.32.2.1 - 2.3
1.2.0 - 1.3.12.2.1 - 2.9
1.5.02.2.1 - 2.13
2.0.0 - 2.1.22.10 - 2.1321.1.1+
2.1.3 - 2.2.32.14.1+23.0.2+
2.3.0+3.3+25.0.0+
2.3.0+3.3+
3.0.0+4.1+26.0.2+ 不再需要为构建工具指定版本 - 插件默认使用最低要求的版本。可以删除该android.buildToolsVersion属性
3.1.0+4.4+27.0.3+ 不再需要为构建工具指定版本 - 插件默认使用最低要求的版本。可以删除该android.buildToolsVersion属性
3.2.0 - 3.2.14.6+
3.3.0 - 3.3.24.10.1+
3.4.0+5.1.1+

 

    我们将plugin version改为3.1.0,Required Gradle version 改为4.4,再次编译就没问题了

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值