【问题标题】:Getting problems when trying to setup Jetpack Compose Found interface rPluginContext尝试设置 Jetpack Compose 时遇到问题 找到接口 rPluginContext
【发布时间】:2020-08-17 19:52:11
【问题描述】:

所以,我试图通过一个简单的示例让 jetpack compose 运行,我已经将我的 kotlin 插件更新到 1.4.0 并且还使用 jetpack compose 文档更新了我的所有构建 gradle,但是我在编译时遇到了这个错误

java.lang.IncompatibleClassChangeError: 找到接口 org.jetbrains.kotlin.backend.common.extensions.IrPluginContext,但是 预计上课时间 androidx.compose.plugins.kotlin.ComposeIrGenerationExtension.generate(ComposeIrGenerationExtension.kt:41)

我也下载了金丝雀版的Android studio

build.gradle 项目

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
  ext.kotlin_version = "1.4.0-rc"
  repositories {
    google()
    jcenter()
    maven{
      url "https://dl.bintray.com/kotlin/kotlin-eap/"
    }
  }
  dependencies {
    classpath "com.android.tools.build:gradle:4.0.1"
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

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

allprojects {
  repositories {
    google()
    jcenter()
    maven{
      url "https://dl.bintray.com/kotlin/kotlin-eap/"
    }
  }
}

task clean(type: Delete) {
  delete rootProject.buildDir
}

build.gradle 应用程序

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

android {
  compileSdkVersion 30
  buildToolsVersion "30.0.1"

  defaultConfig {
    applicationId "com.jetpackcompose"
    minSdkVersion 22
    targetSdkVersion 30
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  }

  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
  }

  buildFeatures {
    // Enables Jetpack Compose for this module
    compose true
  }

  // Set both the Java and Kotlin compilers to target Java 8.

  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

  kotlinOptions {
    jvmTarget = '1.8'
  }

    composeOptions {
      kotlinCompilerVersion kotlin_version
      kotlinCompilerExtensionVersion "0.1.0-dev13"
    }
  }

  dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.1'
    implementation 'androidx.appcompat:appcompat:1.2.0'


    implementation 'androidx.ui:ui-core:0.1.0-dev13'
    implementation 'androidx.ui:ui-tooling:0.1.0-dev13'
    implementation 'androidx.ui:ui-layout:0.1.0-dev13'
    implementation 'androidx.ui:ui-material:0.1.0-dev13'


    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
  }


tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
  kotlinOptions {
    jvmTarget = "1.8"
    freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"]
  }
}

但我无法编译应用程序,我正在尝试运行基本示例

class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent{
        sayHello()
    }
  }

  @Preview
  @Composable
  fun sayHello(){
    Text("Hello World")
  }
}

有谁知道为什么会抛出这个错误?

【问题讨论】:

  • 您的 Kotlin 版本异常,kotlinCompilerVersion kotlin_version 错误。有关如何设置 dev15 项目的信息,请参阅 this blog post。或者,等待一两个月,一旦我们开始获得 alpha 版本,文档可能会有所改进。

标签: android kotlin android-jetpack android-jetpack-compose


【解决方案1】:

使用 Kotlin 版本 1.4.10 而不是 1.4.20 解决了我的问题。

【讨论】:

    【解决方案2】:

    尝试将 Compose 版本更新为 0.1.0-dev16。看起来 0.1.0-dev13 与 Kotlin 不兼容 1.4-rc

    【讨论】:

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