#android #kotlin #android-jetpack #android-jetpack-compose
#Android #kotlin #android-jetpack #android-jetpack-compose
Вопрос:
Итак, я пытаюсь запустить jetpack compose с помощью простого примера. Я уже обновил свой плагин kotlin до версии 1.4.0, а также обновил всю свою версию сборки с помощью документации jetpack compose, но при компиляции я получил эту ошибку
java.lang.Ошибка несовместимости: найден интерфейс org.jetbrains.kotlin.backend.common.extensions.IrPluginContext, но класс ожидался в androidx.compose.plugins.kotlin.ComposeIrGenerationExtension.generate(ComposeIrGenerationExtension.kt:41)
Я также загрузил версию Android Studio canary
проект 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 app
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")
}
}
Кто-нибудь знает, почему возникает эта ошибка?
Комментарии:
1. Ваша версия Kotlin необычна и
kotlinCompilerVersion kotlin_version
неверна. Смотрите Это сообщение в блоге о том, как настроитьdev15
проект. Или подождите месяц или два, и документация может улучшиться, как только мы начнем получать альфа-версии.
Ответ №1:
Использование Kotlin версии 1.4.10 вместо 1.4.20 решило мою проблему.
Ответ №2:
Попробуйте обновить версию Compose до 0.1.0-dev16
. Похоже, 0.1.0-dev13
не совместим с Kotlin 1.4-rc