Jono
Jono

Reputation: 18108

Android jetpack compose NoSuchMethodError: No static method setContent

Jetpack Compose release version: 1.0.0-alpha06 Android Studio Build: 4.2 1Canery 15

my Activity

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

    }

THe above when run compiles this error:

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)
        

some of my gradle settings

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"

Top level build script

/ 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
}

Upvotes: 35

Views: 19352

Answers (4)

τåΣλι
τåΣλι

Reputation: 1060

I ran into the same issue. It worked for me after adding the following line in the app/build.gradle file

android {
    ...
    buildFeatures {
        compose true
    }
}

Upvotes: 69

sergiuser
sergiuser

Reputation: 73

I had this issue with the default Wear OS project from Android Sudio, upgrading all the dependencies in gradle(:app) fixed the issue.

Upvotes: 1

KingKongCoder
KingKongCoder

Reputation: 680

If you are in a multi module setup make sure you have this configuration added in your module gradle file insided the android block where you have compose dependencies.

the below is code syntax for KTS but it should be easily translatable in groovy too

buildFeatures {
    compose = true
}

composeOptions {
    kotlinCompilerExtensionVersion = "$Version_Number"
}

Upvotes: 10

Genc
Genc

Reputation: 87

I had to remove androidx.navigation:navigation-compose dependency as well, that was the issue for me.

Upvotes: 1

Related Questions