【问题标题】:Kotlin plugin error in android studioandroid studio中的Kotlin插件错误
【发布时间】:2015-10-14 15:20:03
【问题描述】:

我正在尝试为 android studio 设置 kotlin 插件并关注this guide。一切都编译得很好,我可以在我的项目中使用.kt 文件。但是,在每个 kotlin 文件中,android-studio 都会说:

Kotlin 库“compiler-1.0-rc1.jar”的格式不受支持。请更新库或插件

如何消除此警告/错误?

这是我的顶级build.gradle

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'me.tatarka:gradle-retrolambda:3.2.3'
        classpath "com.android.databinding:dataBinder:1.0-rc1"
        classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.14.449'
    }
}

allprojects {
    repositories {
        mavenCentral()
        jcenter()
    }
}

这是我在app 目录中的build.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {

    //Ommited for brevity

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
}

dependencies {
    compile 'org.jetbrains.kotlin:kotlin-stdlib:0.14.449'
}

我使用的是 Android Studio 1.4,
buildTools 版本 23.0.1,
Android studio kotlin 插件版本0.14.449.Idea141.12

【问题讨论】:

  • 我在这里第一眼看到的唯一一件事是您使用的是 jcenter() 而不是 mavenCentral()
  • @Jeremy 感谢您的注意!我刚刚尝试添加mavenCentral(),但没有帮助。我无法删除 jcenter() 因为否则 gradle 无法解析 databinding 库。
  • jcenter 应该没问题,因为我的项目中也有。您的应用程序的 build.gradle 是否还将以下内容定义为顶级函数:repositories { mavenCentral() jcenter() }
  • @Jeremy 我刚刚尝试添加它,但它也没有帮助(在与 gradle 和清理/重建项目同步之后)。

标签: android android-studio kotlin


【解决方案1】:

数据绑定库的当前版本使用的是 kotlin。我相信您看到的消息是因为该库使用的是 kotlin 版本 0.12.613。

reddit 上对此进行了一些讨论。

您可以尝试更新到最新版本的数据绑定库1.0-rc4,看看它们是否已经更新到 M14。

【讨论】:

  • 哇,谢谢你的信息,我明天去看看。
  • 如果 reddit 链接有价值,请编辑您的答案以包含相关部分作为引用。至于“为什么?” -- 问题作者使用的编译器和库的版本不匹配。
【解决方案2】:

其他答案涵盖了这个特定库的基础知识。但总的来说:

关于错误信息...

当 Kotlin 创建的类文件的 ABI 版本号与 Kotlin 编译器使用的预期不匹配时,会出现“不支持的格式”错误。这不再是 Kotlin 1.0 Beta 的问题,因为 1.0 的 ABI 编号不会再次更改。但是,在 1.0 候选版本中将进行一次强制重新编译,以确保没有旧的编译器错误影响库或代码,并且一切都被重新构建干净。之后就不会存在这样的问题了。

因此,如果一个库没有使用相同的 ABI 进行更新,或者点击了最后一次“1.0 重新编译”,您可能会遇到类似的错误。解决办法总是找到更新后的库。

Kotlin 1.0 Beta 4 announcement“下一步做什么”部分了解更多信息:

Beta 期结束后,会有一个 RC,然后是 1.0。

我们真的很想确保没有编译过的代码 Kotlin 的预发布版本保留在 1.0 之后,因此 RC 编译器将强制重新编译所有旧代码。我们将 与 JetBrains 外部的库维护人员协调,以确保 所有广泛使用的库都会及时重新编译。

我们也会借此机会移除一些遗留问题:

  • 删除我们在库发展过程中积累的所有弃用,
  • 从生成的代码中删除所有弃用(您可能没有听说过,但它们确实存在!),
  • 摆脱在测试期间发现的一些遗留字节码特性,
  • 移动一些 stdlib 代码,以便那里的包有 更多的结构。

在那之后,唯一兼容的更改 标准库是弃用和添加(这不包括 反射 API)。我们正在对库 API 进行公开审查,以 确保我们没有错过任何重要的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2021-04-28
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多