编程语言
首页 > 编程语言> > 在将AS项目迁移到IDEA时,无法将com.android.build.gradle.internal.model.ApiVersionImpl强制转换为java.lang.Integer

在将AS项目迁移到IDEA时,无法将com.android.build.gradle.internal.model.ApiVersionImpl强制转换为java.lang.Integer

作者:互联网

我需要从Android Studio迁移到IntelliJ IDEA,因为我需要在Java中进行其他一些非Android的工作.我从git克隆了我的项目,并将其导入到IDEA中.但是,我在此过程中遇到了Gradle错误.我已经搜索过,但是找不到解决我的错误的答案.

这是事件日志

03:39:42 PM All files are up-to-date
03:39:42 PM ClassCastException: com.android.build.gradle.internal.model.ApiVersionImpl cannot be cast to java.lang.Integer: com.android.build.gradle.internal.model.ApiVersionImpl cannot be cast to java.lang.Integer

settings.gradle(myproject是SO的示例,想要省略实际名称)

include ':myproject'

根目录中的build.gradle(例如/myproject/build.gradle)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

和另一个build.gradle(例如/myproject/myproject/build.gradle)

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion '20'
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 1
        versionName '1.0'
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        debug {
            versionNameSuffix "-alpha"
        }
    }
    productFlavors {
    }

    packagingOptions{
        exclude 'META-INF/DEPENDENCIES.text'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
    compile 'commons-validator:commons-validator:1.4.0'
}

我认为这与Gradle版本有关,或者Studio和IDEA之间不兼容,但我不确定.高度赞赏的答案.谢谢.

解决方法:

我认为这是因为您的Gradle项目对于IntelliJ IDEA随附的Android插件版本而言太新了.

有两种可能的解决方法:

您可以尝试在构建文件中降级Android Gradle插件的版本,直到找到可以使用的版本为止.如果您退回至其他部分不兼容的地方,则会遇到问题.为此,减少该行中的版本号:

   classpath 'com.android.tools.build:gradle:0.12.+'

但是,如果执行此操作,请知道此构建文件将与现代版本的Android Studio不兼容.目前尚无很好的解决方法.

另一种方法是尝试使用IntelliJ 14 EAP,它可能具有更高版本的插件.请注意,IntelliJ 14仍处于其开发周期的一个非常活跃的阶段,并且可能存在错误.使用风险自负. http://confluence.jetbrains.com/display/IDEADEV/IDEA+14+EAP

冗长的解释:

工作中有许多不同的部分:

>您的构建文件
>适用于Gradle的Android插件
> IntelliJ的Android插件:
> Android Studio,以及
> IntelliJ IDEA

#3中的插件是适用于Android Studio和IntelliJ的相同插件,但是问题在于它的发展非常迅速,并且Android Studio的发布时间表要快得多,并且每个版本都附带了最新代码. IntelliJ IDEA的发布时间表不那么频繁,老实说,我不完全确定它附带的Android插件;我没有看过他们的分支策略.

同样迅速发展的是Gradle的Android插件.通常,这与新版本的Android Studio保持同步.为了支持Android Studio中我们需要的新功能,用户需要较新的最低版本的Gradle插件,反之亦然-这就是为什么过去经常强制迁移插件版本的原因.

因此,正在发生的情况是您的构建文件需要使用最新版本的Android Gradle插件,而该版本需要使用IntelliJ Android插件的最新版本,该插件在Studio中提供,但当前版本的IJ 13不提供.

事情正在逐步解决,因此我们希望将来会有所改善.特别是,Android Gradle插件的1.0版将跨平台运行,并且即使不是永远与长期兼容所有产品的将来版本.

标签:android-gradle,android-studio,intellij-idea,gradle,android
来源: https://codeday.me/bug/20191029/1959402.html