Android jetpack 撰写 NoSuchMethodError:没有静态方法 setContent

jon*_*ney 11 android kotlin android-jetpack-compose

Jetpack Compose 发布版本:1.0.0-alpha06 Android Studio Build:4.2 1Canery 15

我的活动

class MainActivityA : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
              Text(text = "hello", modifier = Modifier.padding(12.dp))
        }

    }
Run Code Online (Sandbox Code Playgroud)

以上运行时编译此错误:

java.lang.NoSuchMethodError: No static method setContent$default(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/Recomposer;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/runtime/Composition; in class Landroidx/compose/ui/platform/WrapperKt; or its super classes (declaration of 'androidx.compose.ui.platform.WrapperKt' appears in /data/app/com.jonathan-_j03c44RbBo00Hn7DeOjeA==/base.apk)
        
Run Code Online (Sandbox Code Playgroud)

我的一些 gradle 设置

def jetpack_compose = "1.0.0-alpha06"

 kotlinOptions {
        jvmTarget = '1.8'
        useIR = true
    }

    composeOptions {
        kotlinCompilerVersion '1.4.0'
        kotlinCompilerExtensionVersion "$jetpack_compose"
    }

  //JetPack Compose stuff
    implementation "androidx.compose.ui:ui:$jetpack_compose"
    // Tooling support (Previews, etc.)
    implementation "androidx.ui:ui-tooling:$jetpack_compose"
    // Foundation (Border, Background, Box, Image, Scroll, shapes, animations, etc.)
    implementation "androidx.compose.foundation:foundation:$jetpack_compose"
    // Material Design
    implementation "androidx.compose.material:material:$jetpack_compose"
    // Material design icons
    implementation "androidx.compose.material:material-icons-core:$jetpack_compose"
    implementation "androidx.compose.material:material-icons-extended:$jetpack_compose"
    // Integration with observables
    implementation "androidx.compose.runtime:runtime-livedata:$jetpack_compose"
    implementation "androidx.compose.runtime:runtime-rxjava2:$jetpack_compose"

Run Code Online (Sandbox Code Playgroud)

顶级构建脚本

/ Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    ext.kotlin_version = "1.4.10"
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.2.0-alpha15"
        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()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

tas*_*shi 9

我遇到了同样的问题。在应用程序 Gradle 文件中添加以下行后,它对我有用

buildFeatures {
    compose true
}
Run Code Online (Sandbox Code Playgroud)

  • 这已经存在,但仍然崩溃 (8认同)

Kin*_*der 7

如果您处于多模块设置中,请确保您已将此配置添加到具有 compose 依赖项的 android 块内的模块 gradle 文件中。

下面是 KTS 的代码语法,但它也应该很容易在 groovy 中翻译

buildFeatures {
    compose = true
}

composeOptions {
    kotlinCompilerExtensionVersion = "$Version_Number"
}
Run Code Online (Sandbox Code Playgroud)